今在一程序里,传递某个session_id后竟然返回 nginx 500错误。而传递另外一个session_id则不会出现错误,打开调试模式后才知道。是因为php出现语法错误,且在php.ini中关闭了 display_error,并在程序中关闭了错误信息,所以直接返回 500错误给nginx。
php-fpm 文档中有这样解析:
如 果被访问的php脚本包含语法错误,并且display_errors设为false,且没有进一步的设置,会立刻返回”HTTP/1.0 500 Internal Server Error”。如果你需要设定一个不同于500的错误码(已经在许多情况下被使用)。或者想要使这个行为独立于display_errors的设置,那么 可以使用fastcgi.error_header。如果你同时使用php-5.2.5或以上版本和php-fpm,那么 fastcgi.error_header的优先级更高。
开启调试模式后遂查找到该问题,即解决了此问题。
由此得到一些启示:一些问题看起来发生在某个模块,其发生根源可能会在该模块的相关模块。遇此问题,定要顺藤摸瓜 ,溯源而破之!
请发表评论