我的 PHP-CGI 开始提供空白页,直到我重新启动该过程,才出现明显原因。
我想知道为什么。
不幸的是,PHP 的“生产”配置文件默认没有 error_log。我的 Nginx 错误日志也没有显示与 PHP 相关的错误。这可能是一个无望的情况,但我还是问一下以防万一。
这是我的设置
- Nginx 0.8.2
- PHP 5.2.6-3ubuntu4.1 带有 Suhosin-Patch 0.9.6.2 (cli)(构建于:2009 年 4 月 23 日 14:37:14)
- PHP APC 3.0.19-2
- spawn-fcgi v1.6.2 (ipv6) - 来自 lighttpd 的 fastcgi 包装器
知道什么可能导致了错误吗?
更新
我认为我已经找出了问题所在。我一直使用 Monit 在 PHP 开始变白时自动重新启动它。我的 PHP 错误日志是空白的。
但我发现,如果我禁用一个名为 WP-SuperCache 的 Wordpress 插件,我的 PHP 就不会每隔约 10 小时重置一次。到目前为止,我的 PHP 已经连续运行了 3 天。有人对此有什么建议吗?
答案1
Supercache 会生成完整缓存版本的页面,并进行其他内部缓存,因此在高负载情况下可能会出现某种时间问题。我会检查您的缓存文件夹,以确保它不包含空白文件。如果包含,则可能是文件锁定问题。解决此类问题可能很棘手,并且可能需要您打开错误单,因为这很可能是代码本身的问题。
答案2
您是否尝试过实际停止 fcgi 服务并重新启动它,而不是重新启动它。我在重新启动 fcgi 时也遇到过类似的奇怪事情
答案3
如果再次发生,请检查您的请求的响应状态(例如 curl -i),如果状态不是 200,请检查您的错误页面(特别是显示错误编号的页面),并确保它们没有设置为以可能导致无限循环的方式重定向。
如果响应状态为 200,请检查响应中除了 HTTP 标头之外是否还有任何文本。
答案4
不是一个答案,但建议-用 spawn-fcgi 替换php-fpm它更加可定制。
PS. 也许你的 nginx.conf 中有特殊的 50x 错误页面重定向
更新: 今天我遇到了类似的问题,当 nginx+php 开始提供空白页时。我的研究表明,无论 php 抛出什么异常,它都会发送空白页。可能是某种 php.ini 指令导致提供空白而不是错误。我应该检查日志等...wip。
更新2: 查看你的 php.ini,其中有 2 个参数需要更改才能查看 php 错误:
error_reporting = E_ALL & ~E_NOTICE
display_errors = On