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

这个问题通常出现在共享主机或某些受限环境里,PHP 的 proc_get_status() 函数被禁用,而 Composer 在执行某些命令(比如 create-project、install 或运行脚本时)会调用它来检查子进程状态,从而触发错误。
先在服务器上运行以下代码,确认函数是否真的不可用:
<?php var_dump(function_exists('proc_get_status'));如果输出 bool(false),说明确实被禁用。常见于 cPanel、SiteGround、GoDaddy 等共享主机的默认 PHP 配置中。
Composer 本身不提供直接关闭该函数调用的开关,但可以通过以下方式规避依赖它的行为:
--no-scripts 参数跳过所有 post-install/post-update 脚本(这些脚本最常触发 proc_get_status())--no-dev 减少依赖数量和脚本执行概率composer install --prefer-dist --no-interaction,优先走压缩包安装路径,减少对进程控制的需求如果你有权限修改 php.ini(如 VPS 或独立服务器):
disable_functions 行,删掉其中的 proc_get_status
proc_open 和 proc_close 也没被禁用(它们是配套函数)注意:部分主机出于安全考虑硬性禁用这些函数,无法通过 php.ini 修改,此时只能走兼容方案。
在持续受限的环境中,可考虑调整开发工作流:
vendor/ 目录上传,跳过线上 Composer 执行composer archive 打包项目(需提前配置 archive 段落)基本上就这些。核心思路是:不让 Composer 在禁用环境下“想查进程状态”,它就不会报错。
以上就是如何解决Composer因“proc_get_status() has been disabled”导致脚本失败的问题?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号