我有一个应用程序(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