在我的私人WAMP PC上运行一些PHP代码时,我突然从服务器得到一个空白的响应 - 实际上没有响应.没有标题,没有数据,PHP错误日志中没有任何内容,nada.我重新启动了APACHE和PHP,但仍然没有.我知道php正在运行,因为我可以正常访问其他PHP脚本.
Firebug报告没有标题,?字节,只需要163ms来"加载"(所以它不是超时).我想到了快速的内存消耗 - 但我监控了我的PC的内存并且没有出现任何高峰.到目前为止,错误和例外一直很好.
世界上有什么?
max_execution_time = 30 ; max_input_time = 60 ; max_input_nesting_level = 64 ; memory_limit = 500M ; error_reporting = E_ALL | E_NOTICE | E_STRICT display_errors = On log_errors = On
:编辑:
我不会@
用十英尺杆接触.我认为红宝石家伙会把它扔进去,所以程序员会放弃PHP.
无论如何,我启用了xdebug并且它没有输出任何研磨文件.然后我接受了zombat的建议并在页面顶部放置了一个DIE()并且它有效.我想我只是有一些非常奇怪的代码完全杀死了PHP.即使错误被禁用或抑制,@
我仍然应该从服务器返回带有空内容的标题!
如果我发现更多,我会回复.
从控制台运行该页面,您将收到错误消息.
// nix php yourFile.php // Windows c:\path\to\php.exe yourFile.php
您可以在此目录中有一个.htaccess文件,该文件已修改错误报告.
要进行测试,请尝试在php脚本的顶部显式设置这些选项,这会给您带来麻烦.
ini_set('display_errors',1); error_reporting(E_ALL);
我也看到这是由过度热心的反病毒软件包引起的.一些包含Web代理软件来过滤互联网和电子邮件.在这种情况下,页面将继续加载到无穷大但永远不会完成.
请注意@(错误抑制)运算符,如果你在某行上有语法错误,PHP将以静默方式退出.
要检测这种情况,请使用set_error_handler并编写自己的错误处理程序,在使用@时仍然会调用错误.
您说其他PHP脚本正在运行,因此表明它可能不是Apache问题.您似乎也正确地记录了所有日志记录设置,并且没有记录任何内容,因此很可能PHP在输出任何内容之前正常退出.以下之一可能是真的:
一个错位的exit()
陈述?你正在编写代码,也许你添加了一个快速exit()
检查的东西,忘了删除它?
don.neufeld关于检查@
操作符使用的想法,它可以抑制任何错误消息,过去花费了我几个小时的调试时间.绝对是值得寻找的东西.
在这种情况下,穷人的调试方法可以产生一些快速的结果.exit('wtf');
在这里输入一个in作为脚本中的第一行.那会跑吗?无论结果如何,该测试的结果立即排除了各种可能性.如果你没有得到任何输出,那么它可能是服务器级问题(配置,坏模块等),但要注意任何更高级别的缓冲.如果你确实获得了输出,那么你知道服务器很好,问题在于你的脚本更深层次,在这种情况下你可以将exit()
呼叫向下移动几行,冲洗并重复.不是一种优雅的调试方式,但它快速而且肮脏,你可能会在几分钟内找到问题.