我在寻找最佳的解决方案如何禁用知警告(和我的脚本不相关的警告),从所包含的文件报告。
包含文件的简单的例子:
$ cat incl_file.php
<?php
error_reporting(E_ALL);
ini_set("display_errors", "on");
$x = $y;
?>
所需的代码的示例(其不防止显示错误信息从所包含的文件)
$ cat main2.php
<?php
error_reporting(E_ALL);
ini_set("display_errors", "on");
@include_once "incl_file.php";
$d=$e;
print "main_file\n";
?>
输出:
$ php main2.php
Notice: Undefined variable: y in /tmp/php_hack/incl_file.php on line 6
Notice: Undefined variable: e in /tmp/php_hack/main2.php on line 7
main_file
下面的“解决方法”的作品,但我很不满意它的烂摊子:
<?php
function myErrorHandler($errno, $errstr, $errfile, $errline) {
if (!(error_reporting() & $errno)) {
// This error code is not included in error_reporting
return;
}
//print "called $errstr\n";
/* Don't execute PHP internal error handler */
return true;
}
set_error_handler("myErrorHandler");
error_reporting(0);
ini_set("display_errors", "off");
include_once "incl_file.php";
restore_error_handler();
error_reporting(E_ALL);
ini_set("display_errors", "on");
$d=$e;
print "main_file\n";
?>
输出:
$ php main.php
Notice: Undefined variable: e in /tmp/php_hack/main.php on line 24
main_file
如果所包含的文件没有
error_reporting(E_ALL);
ini_set("display_errors", "on");
然后@操作按预期工作...