如何处理Composer install时出现的“proc_open() has been disabled”错误?(php.ini配置)

admin 百科 12
Composer 安装报错因 PHP 禁用 proc_open(),需在 CLI 模式 php.ini 的 disable_functions 中移除该函数并重启 CLI 环境;生产环境启用前应评估安全风险。

如何处理Composer install时出现的“proc_open() has been disabled”错误?(php.ini配置)-第1张图片-佛山资讯网

这个错误是因为 PHP 禁用了 proc_open() 函数,而 Composer 在安装依赖时需要调用它来执行 Git、unzip、php 等外部命令。解决方法是启用该函数,关键在 php.ini 配置。

检查并修改 disable_functions 设置

打开你当前 PHP 使用的 php.ini 文件(可通过 php --iniphpinfo() 确认路径),找到 disable_functions 这一行:

  • 如果该行包含 proc_open(例如:disable_functions = exec,passthru,shell_exec,system,proc_open),把它删掉
  • 如果整行被注释(以分号开头),可取消注释后清理掉 proc_open
  • 如果该配置项不存在,通常无需添加;但若存在且没禁用,就不是这个问题根源

确认生效的是正确的 php.ini

Composer 默认使用 CLI 版本的 PHP,所以要改的是 CLI 模式下的 php.ini,不是 Apache 或 Nginx 的那个:

  • 运行 php -i | grep "Loaded Configuration File" 查看实际加载的 ini 路径
  • 改完后必须重启 PHP CLI 环境(不需要重启 Web 服务器),直接重新运行 composer install 即可验证
  • 常见误区:只改了 /etc/php/8.1/apache2/php.ini,却忘了 CLI 用的是 /etc/php/8.1/cli/php.ini

安全提醒:为什么会被禁用?

proc_open() 允许 PHP 启动进程,确实存在安全风险(如执行恶意命令),因此部分共享主机或安全策略会默认禁用它:

标签: php laravel git docker composer apache nginx 解决方法 开发环境 为什么

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~