【发布时间】:2015-06-01 19:47:49
【问题描述】:
我作为站点管理员加入了这家疯狂的公司。现在我对影响 PHP 脚本执行的数据库配置进行了一些更改。
奇怪的是 PHP 脚本就这样死掉了。他们不会抛出任何错误。当我进入脚本时,我意识到他们使用了@错误抑制指令。现在整个代码库有数百万行分布在数千个文件中,并且不想运行类似 sed 的东西来替换“@”。
但是 '@' 让我无法进行调试。就像开发人员闭上眼睛,发现黑暗在说它的夜晚。
有没有办法我可以撤消'@'完成的错误抑制并让 php log 指令处理它。接触代码库不是一种选择。我期待通过修改 php 配置或在引导文件中添加几行来实现此目的的方法。
【问题讨论】:
-
搜索和替换有什么问题?肯定比修补 PHP 引擎容易。
-
只需将 '@' 替换为 '' 也会在不用于抑制的地方替换它。说一个包含电子邮件 ID 或正则表达式代码的文件来验证。
-
简而言之,不要在字符串和cmets中替换它。可以在.. 让我们高估.. 一个小时?
-
你不能让 PHP 忽略错误抑制操作符。您必须删除它,然后有选择地用一袋门把手击败您的程序员,以便首先使用它。
find /path/to/approot -name '*.php' -exec grep -H '@' {} \;然后玩得开心。 -
您应该可以使用
set_error_handler()并通过if (0 === error_reporting()) { ... }记录错误。有关示例,请参见手册页上 Elad Yosifon 的回答:php.net/manual/en/function.set-error-handler.php
标签: php error-handling