我有一个生成HTML网页的PHP脚本,并通过Apache提供给客户端。大多数情况下脚本正常工作,并发送整个网页。但是,有时HTML输出会被截断,停止在文档中看似随机但一致的点。
我已检查过Apache错误日志,但没有与该问题有关的条目。我也重新启动了服务器,看看我是否遇到了未知的内存问题,但问题仍然存在。
有什么可能导致输出截断的想法吗?
Apache配置为以FastCGI运行PHP,其他PHP脚本正确运行并完全输出。启用PHP和Apache日志记录时,PHP设置为E_ALL
,Apache设置为warn
。
答案 0 :(得分:1)
有几个可能导致PHP内容突然终止的问题。但是,大多数情况下通常会导致将错误添加到服务器日志中。一些常见的问题是:
由于在您的情况下没有生成错误并且您启用了错误报告/日志记录,因此可能会在脚本中的某处设置错误的Content-Length
标头。如果Content-Length
标头小于实际内容长度,则会截断内容,然后将其发送到浏览器。
要解决此问题,请尝试以下操作:
header('Content-Length: '...)
的调用
并验证所有长度计算是否正确执行。header('Content-Length: '...)
的来电。通常在未设置时,Content-Length
标题会自动计算并设置为正确的长度。
作为最后的手段,如果您无法确定错误标头的来源,您还可以在脚本中稍后(在内容输出开始之前)使用Content-Length
取消设置header_remove('Content-Length')
标头。但是,请注意,这是不建议,因为它只是解决潜在问题,而不是识别和纠正它。