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函数不起作用呢

修改后执行的结果:
file


2016.8.24 19:02分更正

以为是composer.json的原因,谁知道是composer.json中的"php -r \"copy('.env.example', '.env');\""在我的虚拟机上没有起作用,没有创建.env造成的。

参考链接:安装出错 #17


下面是之前的猜测:
从Github上克隆下来代码后,执行Composer install过程均很顺利,但是最后一步出现了问题,如图:

file
从截图上看是在执行 php artisan optimize 时出现了问题。

打开Google,输入关键词 Illuminate\Foundation\ComposerScripts::postInstall post-install-cmd,在stackoverflow.com找到了答案。
参考链接:Error on Artisan commands when updating Composer dependencies

file

原来这个BUG是在5.2.25之后才被解决,而PHPHub 用的是Laravel 5.1.x LTS版本,所以出现了这个问题。解决起来也比较容易,就是找到pre-update-cmd做相应替换就行。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5
Summer

post-root-package-install 是在 create-project 命令期间,根包安装完成后触发。

我已经提交了一个 fix,给 API 指定一个默认的版本即可。

8年前 评论
Summer

post-install-cmdcomposer install 命令后触发的。

会在以下情况使用 composer install

  1. 第一次 clone 并安装项目;
  2. 后续 composer.lock 有更新,直接使用 composer install 安装更新;

因为第 2 种情形,所以不能写在 post-install-cmd 里。

8年前 评论
Summer

感谢反馈

8年前 评论

@Summer 嗯嗯,我是clone下的代码进行安装的。

8年前 评论

其实,这个问题可以将PHPHub5的README.md的三四步骤调换一下顺序。这种解决思路借鉴了腾讯的“有损服务”的概念:smile:

8年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!