我使用 cron 作业使用 laravel 任务调度来执行一些 CRUD 操作。在本地主机和我的共享托管服务器上,它工作了好几个月,直到最近,当我在共享托管服务器上运行 cron 作业时,我不断收到此错误。我没有对我的共享托管服务器上的代码进行任何更改。
[2017-07-14 09:16:02] production.ERROR: exception 'Symfony\Component\Process\Exception\RuntimeException' with message 'The Process class relies on proc_open, which is not available on your PHP installation.' in /home/xxx/xx/vendor/symfony/process/Process.php:144
Stack trace:
但在本地主机上它工作正常。根据我在网上的发现,我尝试了以下方法。
这些都没有解决问题。我不确定接下来要尝试什么,因为同一个项目在不同的共享托管服务器上运行良好。
经过数周的尝试解决此错误。以下修复有效
现在,cron 作业运行顺利。我希望这对某人有帮助。
这是因为在调试模式下启用了 Flare 错误报告服务 有一个解决方法可以解决这个问题。
发布flare配置文件
php artisan vendor:publish --tag=flare-config
并在
config/flare.php
设置
'collect_git_information' => false
'reporting' => [
'anonymize_ips' => true,
'collect_git_information' => false,
'report_queries' => true,
'maximum_number_of_collected_queries' => 200,
'report_query_bindings' => true,
'report_view_data' => true,
],
您可以自行承担使用此功能的风险:
/usr/local/bin/php -d "disable_functions=" /home/didappir/public_html/api/artisan schedule:run > /dev/null 2>&1
在调试模式下启用 Flare 错误报告服务时,您将看到此错误
解决办法是:
发布flare配置文件
php artisan vendor:publish --tag=flare-config
在 config/flare.php 设置:
'reporting' => [
'anonymize_ips' => true,
'collect_git_information' => false,
'report_queries' => true,
'maximum_number_of_collected_queries' => 200,
'report_query_bindings' => true,
'report_view_data' => true,
],
'send_logs_as_events' => false,
对我来说,删除 config.php 文件的缓存版本可以解决问题(Laravel 6)。 转到 bootstrap/cache/config.php 并删除文件。 另外,不要忘记将 APP_URL 更改为您的域名地址。 PHP 版本应符合 laravel 版本的要求。
对于共享主机,如果无法更改 php.ini,则应使用 laravel 5.8。
对我来说,从 disable_functions 列表中删除“proc_open”函数是有效的。