How to send a status code in PHP, without maintaining an array of status names? How to send a status code in PHP, without maintaining an array of status names? php php

How to send a status code in PHP, without maintaining an array of status names?


There is a new function for this in PHP >= 5.4.0 http_response_code

Simply do http_response_code(404).

If you have a lower PHP version try header(' ', true, 404); (note the whitespace in the string).

If you want to set the reason phrase as well try:

header('HTTP/ 433 Reason Phrase As You Wish');


The actual text of the code is irrelevant. You could do

header('The goggles, they do nawtink!', true, 404);

and it'd still be seen as a 404 by the browser - it's the code that matters.


Zend Framework has a packaged solution in Zend_Http_Response

Zend_Http_Response::$messages contains:

/** * List of all known HTTP response codes - used by responseCodeAsText() to * translate numeric codes to messages. * * @var array */protected static $messages = array(    // Informational 1xx    100 => 'Continue',    101 => 'Switching Protocols',    // Success 2xx    200 => 'OK',    201 => 'Created',    202 => 'Accepted',    203 => 'Non-Authoritative Information',    204 => 'No Content',    205 => 'Reset Content',    206 => 'Partial Content',    // Redirection 3xx    300 => 'Multiple Choices',    301 => 'Moved Permanently',    302 => 'Found',  // 1.1    303 => 'See Other',    304 => 'Not Modified',    305 => 'Use Proxy',    // 306 is deprecated but reserved    307 => 'Temporary Redirect',    // Client Error 4xx    400 => 'Bad Request',    401 => 'Unauthorized',    402 => 'Payment Required',    403 => 'Forbidden',    404 => 'Not Found',    405 => 'Method Not Allowed',    406 => 'Not Acceptable',    407 => 'Proxy Authentication Required',    408 => 'Request Timeout',    409 => 'Conflict',    410 => 'Gone',    411 => 'Length Required',    412 => 'Precondition Failed',    413 => 'Request Entity Too Large',    414 => 'Request-URI Too Long',    415 => 'Unsupported Media Type',    416 => 'Requested Range Not Satisfiable',    417 => 'Expectation Failed',    // Server Error 5xx    500 => 'Internal Server Error',    501 => 'Not Implemented',    502 => 'Bad Gateway',    503 => 'Service Unavailable',    504 => 'Gateway Timeout',    505 => 'HTTP Version Not Supported',    509 => 'Bandwidth Limit Exceeded');

Even if you're not using zend-framework you might be able to break this out for personal use.