500服务器错误:脚本标头过早结束:

Sté*_*etz 22 php apache codeigniter

我有一个php的网站,它与solr索引服务器一起使用,基于CodeIgniter.

我们获得了很多新内容,因此我们刷新了数据库,并且必须重新索引内容(大约168,000个元素).我创建了一个脚本,通过500个切片对内容进行索引 - 当脚本完成时,我们启动下一个索引.

它在我的本地测试环境中完美运行,但在生产中我得到这500个错误:

[Thu Dec 02 ...] [error] [client IP] Premature end of script headers: index.php
Run Code Online (Sandbox Code Playgroud)

我的php.log中没有任何内容,只有返回它的apache error_log.我已经看到它发生在网站的其他页面上一两次,但它是在这个索引期间.

有任何想法吗?

Fab*_*ssa 24

此错误通常(有时)由FcgidIOTimeout指令的FastCGI设置(旧名称:)引起IPCCommTimeout.

这是IO超时的秒数,默认为40秒.超时意味着

"FastCGI应用程序必须在这段时间内开始生成响应.必要时增加该指令以处理需要相对较长时间响应的应用程序."

您可以尝试解决此问题,将其添加到您的vhost.conf中:

<IfModule mod_fcgid.c>
  # 5 minutes for IO timeout, default is 40 seconds
  FcgidIOTimeout 300
</IfModule>
Run Code Online (Sandbox Code Playgroud)

您可以根据需要增加它,然后在重建索引过程完成后恢复原始值.


Dr.*_*lle 0

你的 php 的 error_level 是多少?您在日志中看到的错误消息通常是简单的 PHP 错误的结果,但出于安全原因,服务器设置为不向客户端传递错误消息。由此看来,该消息并不是很有帮助,它可能是一切。