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做相应替换就行。

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5
Summer

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

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

7年前 评论
Summer

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

会在以下情况使用 composer install

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

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

7年前 评论
Summer

感谢反馈

7年前 评论

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

7年前 评论

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

7年前 评论

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