首页 > 解决方案 > Laravel 6.18.2:Process 类依赖于 proc_open,这在您的 PHP 安装中不可用

问题描述

我使用 cron 作业使用 laravel 任务调度来执行一些 CRUD 操作。在本地主机上它工作正常。但是在我的共享主机上,我不断收到此错误。

2020-04-08 16:56:01] local.ERROR: The Process class relies on proc_open, which is not available on your PHP installation. {"exception":"[object] (Symfony\\Component\\Process\\Exception\\LogicException(code: 0): The Process class relies on proc_open, which is not available on your PHP installation. at /home/deshiit/public_html/bangladesh-railway-server/vendor/symfony/process/Process.php:143)
[stacktrace] 

但是在本地主机上它工作正常。我联系了我的托管公司以删除 proc_open 表单禁用 PHP 功能,但他们不能。我尝试了这里给出的解决方案。但是这个解决方案不起作用。

我的 PHP 版本是ea-php73. 我也试过ea-php71ea-php72

app/Console/Kernel.php 如果我 在 ->withoutOverlapping();命令后添加,

protected function schedule(Schedule $schedule)
{
    Log::info('Cron Job Started 1.1');
    $schedule->command('outlier:data')
        ->everyMinute()
        ->withoutOverlapping();
}

然后 proc_open 错误只给出一次然后

protected function schedule(Schedule $schedule)

每分钟都被调用,但它没有执行 handle() 函数

public function handle()
{
    Log::info('Cron Job Started 2.1 in Commands/FindOutlier.php');
}

但是如果 I Clear Cache,它再次给出一次 proc_open 错误,然后每分钟调用一次调度函数。

标签: phplaravelcronshared-hostingproc-open

解决方案


根据上面的评论,确保 Flare 不收集 git 信息(它会尝试打开 git 进程并获取分支和标签信息)。

在flare.php(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,
],

现在,只有在我清除了配置和路由缓存之后,它才在我的 cPanel 实例上修复了它。确保您没有缓存任何内容,并且您的 OPCache 也已清除。

从我查看代码时看到的情况来看,Flare 是唯一一个调用proc_open. 如果这仍然不起作用,请尝试禁用调试模式。


推荐阅读