Apache / PHP - HTML输出突然停止

时间:2018-03-28 01:28:16

标签: php apache http webserver

我有一个生成HTML网页的PHP脚本,并通过Apache提供给客户端。大多数情况下脚本正常工作,并发送整个网页。但是,有时HTML输出会被截断,停止在文档中看似随机但一致的点。

我已检查过Apache错误日志,但没有与该问题有关的条目。我也重新启动了服务器,看看我是否遇到了未知的内存问题,但问题仍然存在。

有什么可能导致输出截断的想法吗?

服务器配置

Apache配置为以FastCGI运行PHP,其他PHP脚本正确运行并完全输出。启用PHP和Apache日志记录时,PHP设置为E_ALL,Apache设置为warn

1 个答案:

答案 0 :(得分:1)

有几个可能导致PHP内容突然终止的问题。但是,大多数情况下通常会导致将错误添加到服务器日志中。一些常见的问题是:

  1. PHP进程内存不足。
  2. 已超出PHP最长执行时间,脚本已终止。
  3. 由于在您的情况下没有生成错误并且您启用了错误报告/日志记录,因此可能会在脚本中的某处设置错误的Content-Length标头。如果Content-Length标头小于实际内容长度,则会截断内容,然后将其发送到浏览器。

    要解决此问题,请尝试以下操作:

    1. 检查您的PHP脚本是否有对header('Content-Length: '...)的调用 并验证所有长度计算是否正确执行。
    2. 如果没有必要,请移除对header('Content-Length: '...)的来电。
    3. 通常在未设置时,Content-Length标题会自动计算并设置为正确的长度。

      作为最后的手段,如果您无法确定错误标头的来源,您还可以在脚本中稍后(在内容输出开始之前)使用Content-Length取消设置header_remove('Content-Length')标头。但是,请注意,这是建议,因为它只是解决潜在问题,而不是识别和纠正它。