可以关闭库代码的 E_STRICT 但不能关闭我的代码吗?
是否可以更改我的 PHP 应用程序通过 include
或 require_once
包含的文件的错误报告级别(关闭 E_STRICT)?
我希望能够看到代码中出现的严格通知,但我使用的是 PEAR MDB2,当我打开 E_STRICT 时,我会从该代码中收到几页警告。
我知道可以使用 .htaccess 文件在每个目录上更改 error_reporting
,但我认为这不适用于包含的文件。我尝试将其放入 pear 文件夹中,但没有任何作用。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以定义自定义错误处理程序,并使用
$ errfile
参数来确定错误来自何处。如果路径与包含的库的路径匹配,请抑制错误。否则,将其传递给 PHP 的错误报告。据我所知,这应该捕获由库引起的所有警告和通知。
因为不需要回溯,所以对于许多触发消息来说它甚至可能足够快。
这未经测试,但根据手册中的示例应该可以工作:
You could define a custom error handler, and use the
$errfile
argument to determine where the error came from. If the path matches the path your included library, suppress the error. Otherwise, pass it on to PHP's error reporting.As far as I can see, this should catch any and all warnings and notices caused by the library.
Because no backtrace is necessary, it's probably even fast enough for a lot of triggered messages.
this is untested but should work, based on the example in the manual:
您可以使用 error_reporting 设置>
ini_set()
。这是一个例子:You can change the
error_reporting
setting dynamically at runtime usingini_set()
. Here is an example:不,不可能。但这
会影响您的所有函数/方法调用,即使它们是在其他/库文件中定义的。
Nope, not possible. There's
But this will affect all your function/method calls even if they're defined in other/library files.
作为一个非常肮脏的黑客,您可以扩展所有类并依赖神奇的 __call 方法。这不是我的想法,所以不要因为打字错误/脑残而射击我:
如果您希望我更详细地解决它,请告诉我。
As a very dirty hack, you could extend all of the classes and rely on the magic
__call
method. This is off the top of my head, so don't shoot me for typos/brainfarts:Let me know if you want me to work it out in more detail.