Laravel / Artisan CLI 重置 error_reporting 级别?
Laravel / Artisan CLI resets error_reporting level?
我们正在使用 Laravel 作业队列通过 schedule:run cron 来 运行 多个作业。我们在 php.ini(对于 apache 和命令行)设置了错误报告以抑制 PHP 的弃用错误,但似乎作业没有成功完成。
当我尝试通过 artisan 在命令行手动 运行 作业时,我遇到了弃用错误,所以我怀疑这是导致它们失败的原因。
如果我添加:
ini_set('error_reporting', 'E_ALL & ~E_DEPRECATED');
在作业的 php 文件顶部,它在手动调用时以及在作业计划中 运行 时成功运行。
Artisan 是否以某种方式重置错误报告级别或丢弃 php.ini 文件设置的错误级别?
我运行
php -r "echo error_reporting();"
在命令行中,它向我显示了正确的错误报告整数,表明应抑制已弃用的错误。
我们发现 Laravel 覆盖了 error_reporting 中的设置:vendor\laravel\framework\src\Illuminate\Foundation\Bootstrap\HandleExceptions.php
public function bootstrap(Application $app)
{
$this->app = $app;
error_reporting(-1);
set_error_handler([$this, 'handleError']);
set_exception_handler([$this, 'handleException']);
register_shutdown_function([$this, 'handleShutdown']);
if (! $app->environment('testing')) {
ini_set('display_errors', 'Off');
}
}
删除 error_reporting(-1);此处的行 Laravel 尊重系统在 php.ini 中的 error_reporting 设置。显然,这会阻止 Laravel 捕获和报告通过系统配置抑制的错误 - 这可能是也可能不是您想要的。
我们正在使用 Laravel 作业队列通过 schedule:run cron 来 运行 多个作业。我们在 php.ini(对于 apache 和命令行)设置了错误报告以抑制 PHP 的弃用错误,但似乎作业没有成功完成。
当我尝试通过 artisan 在命令行手动 运行 作业时,我遇到了弃用错误,所以我怀疑这是导致它们失败的原因。
如果我添加:
ini_set('error_reporting', 'E_ALL & ~E_DEPRECATED');
在作业的 php 文件顶部,它在手动调用时以及在作业计划中 运行 时成功运行。
Artisan 是否以某种方式重置错误报告级别或丢弃 php.ini 文件设置的错误级别?
我运行
php -r "echo error_reporting();"
在命令行中,它向我显示了正确的错误报告整数,表明应抑制已弃用的错误。
我们发现 Laravel 覆盖了 error_reporting 中的设置:vendor\laravel\framework\src\Illuminate\Foundation\Bootstrap\HandleExceptions.php
public function bootstrap(Application $app)
{
$this->app = $app;
error_reporting(-1);
set_error_handler([$this, 'handleError']);
set_exception_handler([$this, 'handleException']);
register_shutdown_function([$this, 'handleShutdown']);
if (! $app->environment('testing')) {
ini_set('display_errors', 'Off');
}
}
删除 error_reporting(-1);此处的行 Laravel 尊重系统在 php.ini 中的 error_reporting 设置。显然,这会阻止 Laravel 捕获和报告通过系统配置抑制的错误 - 这可能是也可能不是您想要的。