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

Posted

技术标签:

【中文标题】Laravel 5.2:Process 类依赖于 proc_open,这在您的 PHP 安装中不可用【英文标题】:Laravel 5.2: The Process class relies on proc_open, which is not available on your PHP installation 【发布时间】:2018-01-07 06:01:28 【问题描述】:

我使用 cron 作业使用 laravel 任务调度来执行一些 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:

但是在本地主机上它工作正常。根据我在网上的发现,我尝试了以下方法。

    联系了我的托管公司以删除 proc_open 表单禁用 PHP 功能。 托管公司提供了自定义 php.ini 文件。我删除了所有 disable_functions Share-Hosting Server 已重新启动并清除缓存

这些都不能解决问题。我不确定接下来要尝试什么,因为同一个项目在不同的共享托管服务器上运行良好。

【问题讨论】:

【参考方案1】:

在尝试解决此错误数周后。以下修复有效

    将项目从 Laravel 5.2 升级到 5.4 在 CPanel 上使用“选择 PHP 版本”将 PHP 版本设置为 7 或在 CPanel 上使用“MultiPHP Manager”将 PHP 版本设置为 ea-php70

现在,cron 作业运行顺利。我希望这对某人有所帮助。

【讨论】:

你使用的是什么版本的 Laravel? laravel 6 是我的版本 不适合我,Laravel Framework 6.18.2 和 PHP 版本 ea-php73 嗨,你能告诉我命令吗?我无法让工作在我的 cpanel 中工作。我也有 Laravel 7 和 Cpanel,我以这种方式对其进行了测试: /opt/cpanel/ea-php72/root/usr/bin/php /home/***lyn/Sistema/artisan schedule:run >> /dev/null 2>&1 【参考方案2】:

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


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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

这对我不起作用,Laravel Framework 6.18.2 和 PHP 版本 ea-php73 这是特定于单个库的,不应作为通用解决方案提供。【参考方案5】:

您可以自担风险使用它:

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

【讨论】:

以上是关于Laravel 5.2:Process 类依赖于 proc_open,这在您的 PHP 安装中不可用的主要内容,如果未能解决你的问题,请参考以下文章

要查看的关系数据 - Laravel 5.2

无法在Laravel 5.2中的中间件中注入依赖项

Laravel 5.2 路由仅适用于根目录

Laravel 5.2 验证帮助存在于数据库中

在 laravel 5.2 中找不到类“Html”

如何解决:在 laravel 5.2 中找不到类“AddSourceInClotureTable”