I’ve been working with the php CURL library and found that it would not return an error if the server returned a 500 error. After looking up 3 different status codes that I wasn’t very familiar with, I created the following function. It is very complete and includes additional WebDAV, Apache and Microsoft codes.
function http_status_code_string($code, $include_code=false) { // Source: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes switch( $code ) { // 1xx Informational case 100: $string = 'Continue'; break; case 101: $string = 'Switching Protocols'; break; case 102: $string = 'Processing'; break; // WebDAV case 122: $string = 'Request-URI too long'; break; // Microsoft // 2xx Success case 200: $string = 'OK'; break; case 201: $string = 'Created'; break; case 202: $string = 'Accepted'; break; case 203: $string = 'Non-Authoritative Information'; break; // HTTP/1.1 case 204: $string = 'No Content'; break; case 205: $string = 'Reset Content'; break; case 206: $string = 'Partial Content'; break; case 207: $string = 'Multi-Status'; break; // WebDAV // 3xx Redirection case 300: $string = 'Multiple Choices'; break; case 301: $string = 'Moved Permanently'; break; case 302: $string = 'Found'; break; case 303: $string = 'See Other'; break; //HTTP/1.1 case 304: $string = 'Not Modified'; break; case 305: $string = 'Use Proxy'; break; // HTTP/1.1 case 306: $string = 'Switch Proxy'; break; // Depreciated case 307: $string = 'Temporary Redirect'; break; // HTTP/1.1 // 4xx Client Error case 400: $string = 'Bad Request'; break; case 401: $string = 'Unauthorized'; break; case 402: $string = 'Payment Required'; break; case 403: $string = 'Forbidden'; break; case 404: $string = 'Not Found'; break; case 405: $string = 'Method Not Allowed'; break; case 406: $string = 'Not Acceptable'; break; case 407: $string = 'Proxy Authentication Required'; break; case 408: $string = 'Request Timeout'; break; case 409: $string = 'Conflict'; break; case 410: $string = 'Gone'; break; case 411: $string = 'Length Required'; break; case 412: $string = 'Precondition Failed'; break; case 413: $string = 'Request Entity Too Large'; break; case 414: $string = 'Request-URI Too Long'; break; case 415: $string = 'Unsupported Media Type'; break; case 416: $string = 'Requested Range Not Satisfiable'; break; case 417: $string = 'Expectation Failed'; break; case 422: $string = 'Unprocessable Entity'; break; // WebDAV case 423: $string = 'Locked'; break; // WebDAV case 424: $string = 'Failed Dependency'; break; // WebDAV case 425: $string = 'Unordered Collection'; break; // WebDAV case 426: $string = 'Upgrade Required'; break; case 449: $string = 'Retry With'; break; // Microsoft case 450: $string = 'Blocked'; break; // Microsoft // 5xx Server Error case 500: $string = 'Internal Server Error'; break; case 501: $string = 'Not Implemented'; break; case 502: $string = 'Bad Gateway'; break; case 503: $string = 'Service Unavailable'; break; case 504: $string = 'Gateway Timeout'; break; case 505: $string = 'HTTP Version Not Supported'; break; case 506: $string = 'Variant Also Negotiates'; break; case 507: $string = 'Insufficient Storage'; break; // WebDAV case 509: $string = 'Bandwidth Limit Exceeded'; break; // Apache case 510: $string = 'Not Extended'; break; // Unknown code: default: $string = 'Unknown'; break; } if( $include_code ) return $code . ' '.$string; return $string; }
HTTP Code values are taken from the Wikipedia entry found here: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes