HTTP status codes:

Here is the list of all the valid HTTP - status codes, and the corresponding phrases, that PHP scripting language can generate when using the $http_response_code parameter in the header() function.
The invalid codes (for example: 199) generate a 500 Internal Server Error response.

To send a specific HTTP status code, the prototype of the header() function is:
void header(string $string, bool $replace, int $http_response_code)

The 3 parameters are:
Examples of use:
The string parameter does not contain any colon character
/* The server will ouput:
 * the response status "HTTP/1.1 204 No Content" */
header('x', TRUE, 204);
The string parameter contains a response header, of which the syntax is:
<string header-name><char colon><char space><string header-value>
/* The server will ouput:
 * the response status "HTTP/1.1 405 Method Not Allowed"
 * and the response header "Allow: GET, HEAD" */
header('Allow: GET, HEAD', TRUE, 405);

List of status codes and phrases generated by PHP:

102 Processing
200 OK201 Created202 Accepted203 Non-Authoritative Information204 No Content205 Reset Content206 Partial Content207 Multi-Status
300 Multiple Choices301 Moved Permanently302 Found303 See Other304 Not Modified305 Use Proxy306 unused307 Temporary Redirect
400 Bad Request401 Authorization Required402 Payment Required403 Forbidden404 Not Found405 Method Not Allowed406 Not Acceptable
408 Request Time-out409 Conflict410 Gone411 Length Required412 Precondition Failed413 Request Entity Too Large414 Request-URI Too Large415 Unsupported Media Type416 Requested Range Not Satisfiable417 Expectation Failed418 unused419 unused420 unused421 unused422 Unprocessable Entity423 Locked424 Failed Dependency425 No code426 Upgrade Required
509 unused

Get the list in these other formats:

Format Description
Text code[HT]phrase[LF] ...
CSV code,"phrase"[LF] ...
XML <?xml version="1.0" encoding="UTF-8"?> <http-status-codes> <status> <code>code</code> <phrase>phrase</phrase> </status> ... </http-status-codes>
PHP $a_http_status_codes = array( code => 'phrase', ... );
Javascript var oHttpStatusCodes = { code: 'phrase', ... };
JSON {"oHttpStatusCodes": { "code": "phrase", ... }}
MySQL INSERT INTO `http_status_codes` (`code`, `phrase`) VALUES (code, 'phrase'), ...;

Hypertext Transfer Protocol:

Resource Description
RFC 2616 (HTML) HTTP/1.1
RFC 2616 (Text)
RFC 4918 (HTML) HTTP Extensions for Web Distributed Authoring and Versioning
RFC 4918 (Text)