Laravel:为了安全起见,队列工作失败了 pcntl_signal()

mwa*_*afi 5 queue laravel laravel-artisan

尝试运行php artisan queue:work会返回此错误:

ErrorException  : pcntl_signal() has been disabled for security reasons
Run Code Online (Sandbox Code Playgroud)

已经pcntl_signal, pcntl_signal_dispatch从php.ini中的disable_functions中删除并重新启动,但没有效果 安全性

小智 1

只是关于我自己发生的情况的一些信息。

  • 如果启用了扩展,Laravel 将调用 pcntl 方法。
  • 即使启用了 pcntl 扩展,该函数也可能会在您的 php.ini 文件中被列入黑名单,特别是使用disable_functions选项。
  • 在这种情况下,Laravel 对扩展的检查将通过,但由于该功能被禁用,对该方法的调用将失败,并显示类似的错误消息。
  • 更新 php.ini 以禁用扩展或从黑名单中删除功能应该可以解决这种情况下的问题。

据我所知,禁用 pcntl 扩展引入的功能是常见的做法,尽管我不确定原因的历史。

编辑:后续是 pcntl 可以内置到 PHP 中,而不一定是扩展。在这种情况下,您必须从disabled_functions配置中删除函数才能解决pcntl调用,或者在没有pcntl的情况下重建PHP。