我有一个奇怪的问题:我有一个PHP应用程序,可以在所有常见的浏览器中使用。但有些页面没有在IE8中完全加载。如果我查看源代码,它可以更少地随机切断,并且有一半的html源丢失,有时在标记的中间。
奇怪的是,它只出现在一些IE设备上(在一家大公司中),而在其他设备上(我会说它占多数)它正在运行。
如果我查看apache错误日志,它会说:
[notice] child pid 9393 exit signal Segmentation fault (11)
我不知道它是否以某种方式相关,但同一页面(使用相同参数调用)如何在一台机器上工作而不在另一台机器上工作(可重复)?
如果浏览器在内部崩溃或者服务器真的崩溃并只提供一半的html源代码,那么IE中的某些渲染问题我没有一个线索。
(不幸的是,我无法提供一个示例,因为它发生在尚未发布的Web项目上)
更新:我做了一些测试:
这还可以归因于病毒扫描程序吗?有没有人知道IE没有服务器错误时只获得一半源代码的情况?
答案 0 :(得分:3)
如果您的Apache日志说其中一个工作进程是segfaulted,那么这不是客户端问题。无论客户端做什么,都不应该导致服务器崩溃。
问题可能与IE8有关,但只是间接 - IE8在访问页面时可能会发出不同的请求模式,或者至少发送一个不同的User-Agent字符串,服务器可能会使用不同的代码路径。
尝试升级您的Apache版本。如果这不起作用,请检查Apache中的配置错误,例如错误的扩展模块。如果不这样做,请检查服务器硬件是否存在缺陷。
答案 1 :(得分:1)
对不起,没有回答,如果是我,我会......
1)配置php进行自动前置(除非已经有一个 2)编写一个包含文件来捕获不完整的页面加载(在ignore_user_abort,connection_status和register_shutdown_function中有一个llok)
如果您的代码可以检测到问题的发生,那么它与segfault无关。
您也可以尝试安装mod_security,它可以记录发布变量并在请求开始时记录日志条目 - 因此您可以调查段错误。
答案 2 :(得分:0)
经过几天的调试(更新的服务器软件,移动到另一台机器等),我们终于遇到了问题。这是一个非常旧的Novell边界管理器安装,某种代理。分段错误似乎与此无关。
如果有人有类似的问题,这里有两个相关的帖子: