【发布时间】:2019-06-05 17:24:54
【问题描述】:
我们正在使用 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();"
在命令行中,它会向我显示正确的错误报告整数,以指示应抑制已弃用的错误。
【问题讨论】:
-
不要引用
'E_ALL & ~E_DEPRECATED',它们都是独立的常量。您现在基本上关闭了所有错误。 -
ini_set 方法需要两个字符串,我认为您应该这样做。 error_reporting 值未在 ini 文件中引用。
-
ini_set() 似乎不能真正以这种方式使用 - 至少不能使用复杂的 error_reporting 设置。我相信你可以做 ini_set('error_reporting', E_ALL)。无论哪种方式,我都不想做这个 ini 设置。我不关心我是仅抑制已弃用的错误还是所有错误。
-
ini_set('error_reporting', E_ALL & ~E_DEPRECATED);works just fine.
标签: php laravel laravel-artisan