我有一个应用程序(CakePHP 2.2)直到最近都运行良好,但是突然之间它开始只提供页面的一部分。页面的 HTML 被截断,但它并不总是每次都在完全相同的位置截断(尽管它大约在同一个位置)。
我已经让其他人从另一个位置对此进行了测试,他们也遇到了同样的问题。
我第一次遇到这个问题时,我重新启动了服务器,它似乎解决了这个问题,但是它又发生了。这次我尝试重新启动 Apache,而不是整个服务器,它似乎没有解决问题。
我不确定还有什么可以尝试的,所以欢迎任何建议。
提前致谢。
更新:我现在也尝试禁用 APC,但禁用后问题仍然存在。
另一个更新:尝试在截断点的上方和下方添加内容后,它似乎在距文件末尾一定距离处被截断,因为近似断点仅在内容被添加到中断位置后移动时才移动。
又一次更新……好吧,所以我做了更多的挖掘工作,我的生产服务器上的内容长度计算似乎有问题。这是我挖掘的输出(删除日期标题以节省空间)......
未设置 Content-Length 的服务器
如果我Content-Length
在 CakeResponse::_setContentLength() 中取消设置标题,则整个页面显示正常,这是返回的标题...</p>
Connection close
Server Apache/2.2.24 (Unix) mod_ssl/2.2.24 OpenSSL/1.0.0-fips mod_bwlimited/1.4
Transfer-Encoding chunked
X-Powered-By PHP/5.3.24
设置了 Content-Length 的服务器
如果我不取消设置Content-Length
标头,则显示的页面将被截断,并且响应标头是……</p>
Connection close
Content-Length 2455
Content-Type text/html; charset=UTF-8
Server Apache/2.2.24 (Unix) mod_ssl/2.2.24 OpenSSL/1.0.0-fips mod_bwlimited/1.4
X-Powered-By PHP/5.3.24
具有标准内容长度的本地机器
我认为这是标题长度计算,除了在我的本地机器上,即使没有取消设置Content-Length
标题,整个页面也会显示,即使Content-Length
返回的结果与生产服务器上的相同......
Connection Keep-Alive
Content-Length 2455
Content-Type text/html; charset=UTF-8
Keep-Alive timeout=5, max=100
Server Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 with Suhosin-Patch mod_ssl/2.2.22 OpenSSL/0.9.8x
X-Powered-By PHP/5.3.15