gpt4 book ai didi

php - 包含的PHP @运算符不会禁用error_reporting

转载 作者:行者123 更新时间:2023-12-03 07:46:44 24 4
gpt4 key购买 nike

我正在寻找最好的解决方案,如何禁用从包含的文件中报告的已知警告(以及脚本的不相关警告)。

包含文件的简短示例:

$ 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");

然后@运算符将按预期工作...

最佳答案

@运算符仅适用于使用它的表达式。它不能禁用包含文件的错误报告。当PHP无法包含文件时,我只会隐藏警告。

关于php - 包含的PHP @运算符不会禁用error_reporting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18912971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com