PHPHub Composer install 失败的经验分享
2016.8.24 19:29分更新
composer.json修改前:
"scripts": {
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postInstall",
"php artisan optimize"
],
"post-update-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"php artisan optimize"
]
},
composer.json修改后:
"scripts": {
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"php -r \"copy('.env.example', '.env');\"",
"Illuminate\\Foundation\\ComposerScripts::postInstall",
"php artisan optimize"
],
"post-update-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"php artisan optimize"
]
},
可见 post-root-package-install
中的php命令并没有起作用,将里面的命令移动到post-install-cmd
后问题解决了,我还以为是copy函数不起作用呢
修改后执行的结果:
2016.8.24 19:02分更正
以为是composer.json的原因,谁知道是composer.json中的"php -r \"copy('.env.example', '.env');\""
在我的虚拟机上没有起作用,没有创建.env造成的。
参考链接:安装出错 #17
下面是之前的猜测:
从Github上克隆下来代码后,执行Composer install过程均很顺利,但是最后一步出现了问题,如图:
从截图上看是在执行 php artisan optimize
时出现了问题。
打开Google,输入关键词 Illuminate\Foundation\ComposerScripts::postInstall post-install-cmd
,在stackoverflow.com
找到了答案。
参考链接:Error on Artisan commands when updating Composer dependencies
原来这个BUG是在5.2.25之后才被解决,而PHPHub 用的是Laravel 5.1.x LTS版本,所以出现了这个问题。解决起来也比较容易,就是找到pre-update-cmd做相应替换就行。
post-root-package-install
是在create-project
命令期间,根包安装完成后触发。我已经提交了一个 fix,给 API 指定一个默认的版本即可。
post-install-cmd
是composer install
命令后触发的。会在以下情况使用
composer install
:composer.lock
有更新,直接使用composer install
安装更新;因为第 2 种情形,所以不能写在
post-install-cmd
里。感谢反馈
@Summer 嗯嗯,我是clone下的代码进行安装的。
其实,这个问题可以将PHPHub5的README.md的三四步骤调换一下顺序。这种解决思路借鉴了腾讯的“有损服务”的概念:smile: