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 安装中不可用的主要内容,如果未能解决你的问题,请参考以下文章