我正在使用一个大型的第 3 方 php 软件,它有许多我正在尝试修复的错误。但是,这很难做到,因为它使用 @-eg 有很多错误抑制@include 'brokenfile.php';
,这会导致 php 死掉而不显示任何类型的错误。所以我所看到的只是一个空白屏幕,它什么也没告诉我。尽管它们被“抑制”,我如何强制 php 显示错误?
问问题
573 次
4 回答
5
有一个扩展名为scream
它将禁用@
操作员进行调试
从手册:
尖叫扩展提供了禁用静音错误控制运算符的可能性,以便报告所有错误。此功能由 ini 设置控制。
安装扩展,然后在你的 php.ini 中启用它:
scream.enabled = On
选择:
最近的 xdebug 版本也提供此功能。您需要安装和设置 xdebug
xdebug.scream = On
在 php.ini 中
于 2013-07-05T15:20:08.850 回答
1
可以使用小的 shell 命令递归地从代码中删除所有“@”:
find . -type f | xargs perl -pi -e 's/^@|(\s)@/$1/g'
或者您可以为每个更新的文件创建备份:
find . -type f | xargs perl -pi.bkp -e 's/^@|(\s)@/$1/g'
于 2013-07-05T15:37:12.723 回答
0
用这个 :
<?php
function exception_error_handler($errno, $errstr, $errfile, $errline )
{
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
function catchException($e)
{
if (error_reporting() === 0)
{
return;
}
// Do some stuff
}
set_exception_handler('catchException');
?>
“如果您使用 set_error_handler() 设置了自定义错误处理程序函数,那么它仍然会被调用,但是这个自定义错误处理程序可以(并且应该)调用 error_reporting(),当触发错误的调用前面有一个@。”
参考:错误控制运算符
于 2013-07-05T15:22:48.430 回答
0
快速而肮脏,hacky 的解决方案:您可以对整个项目进行查找和替换,然后简单地删除前面有空格的所有 @,在 Netbeans 中,这可以使用Ctrl+H
. 您正在搜索的模式是“@”(空格和字符)。
于 2013-07-05T15:22:58.060 回答