这是两个不同的 php 文件的故事。
文件1来源:
<?php $null->test();
文件 1 输出:
致命错误:在/wwwroot/sites/example.com/public/fatal.php 第 1 行中对非对象调用成员函数 test()
这也会打印到 /var/log/php-fpm/www-error.log(如我的 www.conf 中所定义)
文件 2:
class A {}
function test(A $obj) {
echo 'here...';
}
var_dump('started');
$a = new A();
test($a);
var_dump('this is going to error out');
test($null);
var_dump('do we get here?');
文件 2 输出:
字符串“已开始”(长度=7)
这里...
字符串“这将出错”(长度=26)
没有记录错误。
/etc/php-fpm.d/www.conf中的相关设置:
catch_workers_output = yesphp_flag[display_errors] = on
php_flag[display_startup_errors] = on
php_admin_value[error_reporting] = 1
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 128M
有任何想法吗?
答案1
php_admin_value[error_reporting] = 1
值 1 表示E_ERROR
仅限类型的错误。您的代码会生成一个E_RECOVERABLE_ERROR
。