Laravel 5.2:Process类依赖于proc_open,这在PHP安装中不可用

时间:2017-07-31 15:21:41

标签: php cron laravel-5.2 cpanel

我使用cron job使用laravel Task Scheduling进行一些CRUD操作。在localhost和我的Share-Hosting服务器上,它运行良好数月,直到最近我在我的Share-Hosting服务器上运行cron作业时仍然遇到此错误。我没有对Share-Hosting服务器上的代码进行任何更改。

[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:

但是在localhost上运行正常。基于我在网上的发现,我尝试了以下内容。

  1. 联系我的托管公司以删除proc_open表格禁用PHP功能。
  2. 托管公司提供自定义php.ini文件。我删除所有disable_functions
  3. 重新启动Share-Hosting Server并清除缓存
  4. 这些都没有解决问题。我不确定接下来会尝试什么,因为相同的项目在不同的Share-Hosting Server上运行良好。

6 个答案:

答案 0 :(得分:6)

经过数周的尝试解决此错误。以下修复工作

  1. 将项目从Laravel 5.2升级到5.4
  2. 在CPanel上使用“选择Php版本”将 PHP版本设置为7
  3. 或者在CPanel上使用“MultiPHP Manager”将PHP版本设置为 ea-php70
  4. 现在,cron工作顺利进行。我希望这有助于某人。

答案 1 :(得分:1)

对我来说,删除config.php文件的缓存版本可解决问题(Laravel 6)。 转到bootstrap / cache / config.php并删除文件。 另外,不要忘记将APP_URL更改为您的域名地址。 PHP版本应符合laravel版本要求。


对于共享主机,如果您无法更改php.ini,则应使用laravel 5.8。

答案 2 :(得分:1)

您可以在有风险的情况下使用它:

/usr/local/bin/php -d "disable_functions=" /home/didappir/public_html/api/artisan schedule:run > /dev/null 2>&1 

答案 3 :(得分:0)

在调试模式下启用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,

答案 4 :(得分:0)

Laravel 6及更高版本(proc_open错误)

这是因为在调试模式下启用了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,
],

答案 5 :(得分:0)

这个错误使我发疯! ...最后,我意识到我在“ routes / web.php”文件中犯了一个错误,处理该路由的控制器方法设置错误。我解决了这个错误,但错误消失了。

// wrong one :
Route::get('test', 'TestController@test');

// fixed one :
Route::get('test', 'Panel\TestController@test');

因此,在对复杂的配置文件进行任何更改之前,只需确保具有正确的路径控制器路径即可。