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

问题描述 投票:0回答:7

我使用 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:

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

  1. 联系我的托管公司删除 proc_open 形式禁用 PHP 函数。
  2. 托管公司提供自定义 php.ini 文件。我删除了所有disable_functions
  3. 共享托管服务器已重新启动并清除缓存

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

php laravel cron cpanel
7个回答
12
投票

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

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

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


12
投票

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,
],

10
投票

您可以自行承担使用此功能的风险:

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

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,

2
投票

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


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


0
投票

enter image description here

如果它被禁用,您将无法运行它
使用 phpinfo() 来查看它是否被禁用


0
投票

对我来说,从 disable_functions 列表中删除“proc_open”函数是有效的。

  1. 转到 PHP 选择器。
  2. 切换到“选项”选项卡。
  3. disable_functions 列表中删除“proc_open”函数。
© www.soinside.com 2019 - 2024. All rights reserved.