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

3次阅读

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

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

这个错误是因为 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,不是 apachenginx 的那个:

  • 运行 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 启动进程,确实存在安全风险(如执行恶意命令),因此部分共享主机或安全策略会默认禁用它:

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

神笔马良

神笔马良 – AI让剧本一键成片。

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

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

立即学习PHP免费学习笔记(深入)”;

  • 如果你在生产环境或受控服务器上,启用前请评估风险,确保代码来源可信
  • 不建议在面向公网的共享主机上自行开启——联系服务商更稳妥
  • 本地开发环境(如 XAMPP、dockerlaravel Valet)通常可放心启用

基本上就这些。改完 php.ini,保存,再试一次 composer install,错误通常就消失了。

text=ZqhQzanResources