如何分析Composer脚本钩子错误,排查Composer scripts报错原因?
- 内容介绍
- 文章标签
- 相关推荐
本文共计858个文字,预计阅读时间需要4分钟。
脚本执行错误并非脚本编写错误,而是执行上下文缺失或环境不一致。
直接查看:
加 -v 参数才能看到真实错误输出
Composer 默认把子进程的 stderr 全部吃掉,只留一个笼统失败提示。不加 -v 就调试,等于靠猜修电路。
- 必须用
composer run test -v或composer install -v重试,强制显示每条命令的完整执行路径和输出 - 重点盯住报错前最后一行实际执行的命令,比如
php ./tests/run.php—— 它才是真凶入口 - 如果输出里出现
sh: php: not found或'php' is not recognized,说明 shell 根本找不到php可执行文件,和脚本逻辑无关
autoload.php 是否存在决定类能否加载
很多脚本(尤其是 post-install-cmd、post-update-cmd)会在 vendor/autoload.php 尚未生成时就被触发。此时脚本里只要 new 一个类,立刻 Class not found。
本文共计858个文字,预计阅读时间需要4分钟。
脚本执行错误并非脚本编写错误,而是执行上下文缺失或环境不一致。
直接查看:
加 -v 参数才能看到真实错误输出
Composer 默认把子进程的 stderr 全部吃掉,只留一个笼统失败提示。不加 -v 就调试,等于靠猜修电路。
- 必须用
composer run test -v或composer install -v重试,强制显示每条命令的完整执行路径和输出 - 重点盯住报错前最后一行实际执行的命令,比如
php ./tests/run.php—— 它才是真凶入口 - 如果输出里出现
sh: php: not found或'php' is not recognized,说明 shell 根本找不到php可执行文件,和脚本逻辑无关
autoload.php 是否存在决定类能否加载
很多脚本(尤其是 post-install-cmd、post-update-cmd)会在 vendor/autoload.php 尚未生成时就被触发。此时脚本里只要 new 一个类,立刻 Class not found。

