V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Liang
V2EX  ›  PHP

php 为何无法自定义 http code? 404 返回 200。

  •  
  •   Liang · 2015-11-18 16:13:21 +08:00 · 2944 次点击
    这是一个创建于 3327 天前的主题,其中的信息可能已经有所发展或是发生改变。
    responese http code 无法自定义,设置了 404 ,都是返回 200 ,请问怎么哪个配置出了问题?
    环境:
    windows10 nginx/1.8.0 PHP/5.6.13


    littlexiang
        1
    littlexiang  
       2015-11-18 16:14:23 +08:00
    void header ( string $string [, bool $replace = true [, int $http_response_code ]] )

    有问题 看手册
    youxiachai
        2
    youxiachai  
       2015-11-18 16:15:02 +08:00
    .........怎么吐槽呢........

    status code..不是在 http header 上的...
    chaegumi
        3
    chaegumi  
       2015-11-18 16:19:19 +08:00
    codeigniter 的做法

    function set_status_header($code = 200, $text = '')
    {
    if (is_cli())
    {
    return;
    }

    if (empty($code) OR ! is_numeric($code))
    {
    show_error('Status codes must be numeric', 500);
    }

    if (empty($text))
    {
    is_int($code) OR $code = (int) $code;
    $stati = array(
    100 => 'Continue',
    101 => 'Switching Protocols',

    200 => 'OK',
    201 => 'Created',
    202 => 'Accepted',
    203 => 'Non-Authoritative Information',
    204 => 'No Content',
    205 => 'Reset Content',
    206 => 'Partial Content',

    300 => 'Multiple Choices',
    301 => 'Moved Permanently',
    302 => 'Found',
    303 => 'See Other',
    304 => 'Not Modified',
    305 => 'Use Proxy',
    307 => 'Temporary Redirect',

    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',
    422 => 'Unprocessable Entity',

    500 => 'Internal Server Error',
    501 => 'Not Implemented',
    502 => 'Bad Gateway',
    503 => 'Service Unavailable',
    504 => 'Gateway Timeout',
    505 => 'HTTP Version Not Supported'
    );

    if (isset($stati[$code]))
    {
    $text = $stati[$code];
    }
    else
    {
    show_error('No status text available. Please check your status code number or supply your own message text.', 500);
    }
    }

    if (strpos(PHP_SAPI, 'cgi') === 0)
    {
    header('Status: '.$code.' '.$text, TRUE);
    }
    else
    {
    $server_protocol = isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.1';
    header($server_protocol.' '.$code.' '.$text, TRUE, $code);
    }
    }
    Liang
        4
    Liang  
    OP
       2015-11-18 16:22:33 +08:00
    @littlexiang
    @youxiachai
    @chaegumi

    谢谢!我错了!结贴!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   996 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:36 · PVG 03:36 · LAX 11:36 · JFK 14:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.