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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 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年前 评论

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