我在使用 nginx 和 php-fpm 时遇到了随机 502 网关错误的问题。就我而言,我发现了一个场景,其中各种 php.ini error_log 设置和 error_reporting 级别导致出现随机 502 网关错误。
通过更改 php.ini 设置 error_reporting 和 error_log 我能够使 502 网关错误消失 - 但更重要的是我能够查看日志中真正的 php 错误并修复它们。
主要问题是,如果“error_reporting 设置为显示通知”,“error_logging = On”,那么我需要确保将 error_log 设置为可写入服务器的有效路径。
// !!! 502 Gateway Error (unhappy server)
error_reporting = E_ALL & E_NOTICE
; error_log = php_errors.log (note this is commented)
// Happy Server, no 502 gateway error
error_reporting = E_ALL & E_NOTICE
error_log = /valid/log/path/and/permissions
// Happy Server, no 502 gateway error
error_reporting = E_CORE_ERROR
; error_log = php_errors.log (note this is commented)
请注意,实际错误是 php 通知......但是 ngingx 为与未设置属性相关的 php 通知抛出 502 网关错误。
另请注意,并非在每个 php 通知中都会触发 502 网关错误。
希望这可以节省一些人的挫败感!