【问题标题】:error_reporting(0) throws 500 errorerror_reporting(0) 抛出 500 错误
【发布时间】:2011-09-27 17:20:48
【问题描述】:

所以 - 我遇到了奇怪的情况。

error_reporting(0); 语句一直给我一个服务器 500 错误。

但是,error_reporting(1); 工作正常..

对于我的一些 URL 验证器,它的警告太多了。这是怎么回事?知道如何解决这个问题吗?

【问题讨论】:

  • 如果您得到 500,请查看通常包含详细信息的网络服务器 error.log

标签: php error-reporting


【解决方案1】:

首先,如果我表现得“聪明”,我很抱歉,但我必须告诉你,如果有警告,你应该考虑修复它们,而不是仅仅将它们降低为静音 ... :)

垃圾 PHP 代码让坏事发生,你不会喜欢它。我知道 80% 的 PHP 代码都是垃圾,但如果它不是很大的话,真的要尝试修复那个库。

但是,如果您只制作一个简单的 .php 文件,我们可以尝试解决这个问题,只有一行:

<?php
error_reporting(0);
?>

并测试它是否会引发错误。如果不是,则问题不是由error_reporting 引起的,而是由它触发的,并且其他地方发生了一些病态的事情。 :)

【讨论】:

  • 大声笑,别担心聪明的答案也能带来好处 :) 我报告错误背后的原因是我正在使用 if (simplexml_load_string($result)) 检查 RSS 提要是否有效 - - 如果有错误,它将返回 false。但是,当它在 XML 中遇到错误时,它也会发出有关这些错误是什么的警告。所以我试图压制这些
  • 嗯,我明白了......所以告诉我们使用单行 php 文件会发生什么。顺便说一句:您可以仅对使用垃圾代码的部分使用错误处理程序,而不是整个脚本。见set_error_handler
  • 一个班轮工作,但它不能与我的代码结合使用。但是,我确实在一些文档中找到了一种方法,该方法允许我防止错误输出我正在尝试做的事情。感谢您的提示!
  • 没关系,Atticus,但请注意:如果像error_reporting(0) 这样的无辜调用触发了这样的错误,那么某处可能会出现一些问题。尝试对其进行一些测试(例如,在另一台服务器上尝试)...
  • 会不会是 simplexml_load_string 使用了错误处理程序,而关闭 error_reporting 会导致这里出现异常?否则,当我注释掉 simplexml_load_string 时,error_reporting 工作正常。哦,好吧。
【解决方案2】:

尝试错误报告(E_ALL);和 ini_set("display_errors","On");并检查发生的错误。解决这些问题后,应该没有任何问题。

祝你好运
谢。

附:我几乎 100% 猜测您使用 Chrome,因为出于某种原因,chrome 有时只会显示自己的错误屏幕而不是显示错误消息。因此,也请尝试使用其他浏览器来检查错误。

【讨论】:

  • 有趣,我一直在使用 chrome,碰巧注意到我不断收到 500 个错误而不是 php 错误。谢谢 Shai!
  • 没问题,如果您觉得我的答案对您有价值,请务必将其标记为已选答案;-)
【解决方案3】:

error_reporting()的值是用常量定义的,所以不要用直接值来设置。

如果您使用了常量,您会注意到它们都没有 0 作为值。

如果要报告所有错误,规则有一个例外:使用值 -1 :

error_reporting(-1);

来源:http://us.php.net/manual/en/function.error-reporting.php

并考虑修复所有警告! (如果可能的话,甚至通知)

注意:-1 值用于确保即使添加更多错误代码,它们也会全部包含在内。

【讨论】:

  • error_reporting(0),即提问者所说的内容,保证可以工作,因为E_NONE 等于 0——甚至在文档中作为示例给出。但是 +1,使用文字常量而不是裸数字是个好习惯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多