Rud*_*die 10 php error-handling
语境:
我有三个应用程序环境:dev(本地),测试/登台(prod服务器),生产.该应用程序知道哪个是哪个.登台和生产的错误报告为0,因此永远不会显示错误.在dev我想立即看到错误,我想看到它们发生的地方,所以不是在某些日志中,而是在代码的结果中.
但是,我不希望看到我明确禁止的错误@.我一直在使用fsockopen,当它无法连接时会发出警告.我接受无连接,但不想看到错误.甚至没有开发.
显然所有错误都通过自定义错误处理程序,即使它们在代码中被抑制.
我的错误处理程序只有4个参数:errno,error,file,line.从那些我无法看出错误是否最初被抑制.如果我能看到那里,我可以选择是否打印错误(现在我总是这样做,如果env = dev).
有任何想法吗?或者可能关于如何完全忽略被抑制的错误(以便它们甚至不会到达自定义错误处理程序)?
Ada*_*son 21
set_error_handler手册页中有一个提示.
error_reporting()如果导致错误的语句由@ error-control运算符预先添加,则[ value]值为0
当您使用错误控制操作符时@,发生的是:
error_reporting(0)上面稍微混淆的引用是指error_reporting返回当前设置的事实.如果使用控制运算符抑制了错误,则调用error_reporting()将返回0.
因此,如果您知道已将其设置为非零(即,您正在报告某些错误)并且它返回零,则您知道错误已被抑制.
如果您检测到被抑制的错误并想知道它是什么,您可以在变量中找到它$php_errormsg(如果track_errors设置为truein php.ini).
请注意,错误控制操作符会导致大量开销,因为每次使用时它会更改错误报告级别两次.它会减慢你的脚本速度.
| 归档时间: |
|
| 查看次数: |
1373 次 |
| 最近记录: |