Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
nginx php fpm和ubuntu出现随机502网关错误_Ubuntu_Nginx_Php - Fatal编程技术网

nginx php fpm和ubuntu出现随机502网关错误

nginx php fpm和ubuntu出现随机502网关错误,ubuntu,nginx,php,Ubuntu,Nginx,Php,我在使用nginx和php-fpm时遇到了502个随机网关错误的问题。在我的例子中,我发现了一个场景,其中各种php.ini错误日志设置和错误报告级别导致出现随机的502网关错误 通过更改php.ini设置error_reporting和error_log,我能够使502网关错误消失——但更重要的是,我能够看到日志中真正的php错误并修复它们 主要的问题是,如果“error\u reporting设置为display notices”,error\u logging=On,那么我需要确保erro

我在使用nginx和php-fpm时遇到了502个随机网关错误的问题。在我的例子中,我发现了一个场景,其中各种php.ini错误日志设置和错误报告级别导致出现随机的502网关错误

通过更改php.ini设置error_reporting和error_log,我能够使502网关错误消失——但更重要的是,我能够看到日志中真正的php错误并修复它们

主要的问题是,如果“error\u reporting设置为display notices”,error\u logging=On,那么我需要确保error\u 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通知…但是,对于与未设置的属性相关的php通知,IngEx抛出了502个网关错误

还要注意的是,并非每个php通知都会触发502网关错误


希望这能帮一些人省去一些麻烦!

我在windows机器上以fastCGI模式运行iis和php时遇到过这个问题,所以这不仅仅是一个nix问题

罪魁祸首是php日志记录。您不必将其设置为静态目录,但如果您授予适当的权限,它可以写入脚本所在的同一目录。(如果您有一个大型复杂的站点,这会非常有用)

我的服务器就是这样设置的,我只是添加了一条规则,不向公众提供错误日志


总之,请检查权限!=)

Nginx中的502网关错误是由php fpm没有足够的进程和/或超时引起的。日志记录只告诉您问题是什么,而不是502错误的原因

我在25台服务器上使用stunnel+haproxy+nginx+php fpm。pfp fpm中的默认值非常低,即使对于中等繁忙的服务器也是如此。配置fpm子进程的方式与使用apache mod_php的方式大致相同

我使用以下方法:

pm.max_children = 250
pm.start_servers = 20
pm.min_spare_servers =10
pm.max_spare_servers = 20
pm.max_requests = 1500

这是一个2GB内存的服务器。它每天提供20-30GB的流量,没有502的

我有一个类似的问题,通过禁用PHP警告解决了这个问题,但是,我认为这个问题与错误日志使用的缓冲区的NGINX配置有关。只有在收到一定数量的警告消息后才会触发错误ed,并且似乎可以很好地预测重复性;但是我不知道涉及哪些设置,所以在我能够解决损坏的设置之前,请关闭警告。

如果上述步骤无法帮助您解决问题,请检查是否已启用eaccelerator

通过禁用load.so条目在php.ini或php.d/eaccelerator.ini中全局禁用它


所有问题都解决了。似乎Accelerator在某些情况下与php fpm组合会失败。

您可以/应该将您的问题编辑回一个问题,然后自己回答。然后接受您的答案,因此显示为已回答。我也会+1您的答案,非常好的问题,谢谢。这是问题还是答案?;)