cod*_*ark 9 php error-handling
我作为网站管理员加入了这个疯狂的公司.现在我对我的数据库配置进行了一些更改,这些更改影响了PHP脚本的执行.
奇怪的部分是PHP脚本就死了.他们不会抛出任何错误.当我进入脚本时,我意识到他们已经使用了@ error suppression指令.现在整个代码库有数百万行分布在数千个文件中,并且不想像sed那样运行替换'@'.
但'@'让我无法进行调试.就像开发商正在闭上眼睛,发现黑暗的视野正在说它的夜晚.
有没有办法可以撤消'@'所做的错误抑制,并让php log指令处理它.触摸代码库不是一种选择.我期待通过修改php配置或在bootstrap文件中添加几行来实现此目的.
如果您已安装并启用了Xdebug(在开发中,您应该),那么您可以设置xdebug.scream配置选项,该选项禁用@ -operator.
或者,尖叫PECL扩展也会禁用@ -operator(这就是它所做的全部).
基本上你安装扩展然后将scream.enabledini设置为true/on.
对于通过 安装的处理程序,静音错误仍然可见set_error_handler。所以你可以在你的引导文件中添加这样的东西:
set_error_handler(function ($errno, $errstr, $errfile, $errline) {
echo "$errstr at $errfile($errline)\n";
});
Run Code Online (Sandbox Code Playgroud)
或更好,
set_error_handler(function ($errno, $errstr, $errfile, $errline) {
throw new ErrorException($errstr, $errno, 1, $errfile, $errline);
});
Run Code Online (Sandbox Code Playgroud)
这也将显示堆栈。
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |