如何解决Composer因“proc_get_status() has been disabled”导致脚本失败的问题?

admin 百科 24
Composer在禁用proc_get_status的共享主机上会报错,可通过--no-scripts、--no-dev、--prefer-dist等参数规避,或本地安装后上传vendor目录。

如何解决Composer因“proc_get_status() has been disabled”导致脚本失败的问题?-第1张图片-佛山资讯网

这个问题通常出现在共享主机或某些受限环境里,PHP 的 proc_get_status() 函数被禁用,而 Composer 在执行某些命令(比如 create-projectinstall 或运行脚本时)会调用它来检查子进程状态,从而触发错误。

确认是否真的被禁用

先在服务器上运行以下代码,确认函数是否真的不可用:

<?php var_dump(function_exists('proc_get_status'));

登录后复制

如果输出 bool(false),说明确实被禁用。常见于 cPanel、SiteGround、GoDaddy 等共享主机的默认 PHP 配置中。

绕过 proc\_get\_status() 的 Composer 配置方案

Composer 本身不提供直接关闭该函数调用的开关,但可以通过以下方式规避依赖它的行为:

  • 使用 --no-scripts 参数跳过所有 post-install/post-update 脚本(这些脚本最常触发 proc_get_status()
  • 添加 --no-dev 减少依赖数量和脚本执行概率
  • 提前下载好 vendor 包(比如在本地完整安装后上传),避免在目标服务器上运行 install/update
  • 改用 composer install --prefer-dist --no-interaction,优先走压缩包安装路径,减少对进程控制的需求

临时启用 proc\_get\_status()(仅限可修改 PHP 配置的环境)

如果你有权限修改 php.ini(如 VPS 或独立服务器):

标签: php go composer apache nginx 工具

发布评论 0条评论)

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

趣科技 机圈观察员 茄考网 茄录网 海印网 雷鹃网 鹃朝网 互联网观察员 评测官
趣科技 机圈观察员 茄考网 茄录网 海印网 雷鹃网 鹃朝网 互联网观察员 评测官