ネクストデザインホーム 2016.12.31


Composerを使ったLaravelプロジェクト新規作成時のエラー対処例

エラー内容

ケース1:
[Composer\Downloader\TransportException]
Content-Length mismatch
で中断される。
ケース2:
最後の
Application key [base64:gwk1DzXPwEWH7m4jswZpODUZ5BgjYlqt4tnEgUI87xo=]set successfully.
まで表示されるが、途中次のエラーが出ている。
Failed to decode response: zlib_decode():data error

環境

Windows7 Professional 64bit
PHP 7.1.0RC6 (cli) (built: Nov 9 2016 13:33:34) ( ZTS MSVC14 (Visual C++ 2015) x64 )
Composer version 1.3.0 2016-12-24 00:47:03

新規作成コマンド

composer create-project laravel/laravel --prefer-dist myapp

コマンド実行後の期待値

下図はコマンド実行前の状態です。
下図のlaravelフォルダの直下に、myappフォルダとその配下にLaravelプロジェクトが作成されることです。

なお、
・フォルダは任意の場所を指定できます。(例のlaravelは、フレームワーク名のLaravelとは無関係です)
・コマンド実行時のカレントディレクトリは、この例ではnginx-1.10.2\html\laravelにします。
・myappフォルダが存在するとエラーになります。

対処方法

(1) 後述の編集を加えたcomposer.jsonを仮置きします。
(2) 新規作成コマンドを実行します。
(3) エラーなしでコマンドが完了します。
(4) 仮置きしたcomposer.jsonを削除します。
(5) myappフォルダを削除して、再度作成コマンドを実行します。
(6) エラーなしでコマンドが完了します。

上の(3)の結果と(6)の結果は同じはずですが、念のため私は、仮置きのcomposer.jsonを削除後に再度コマンド実行しました。
この後は、エラーは出ないようになりました。
この対処方法が妥当なのかどうか分かりませんし、エラーがなくなる理由も説明できませんが、一応事例として掲載しました。
参考:http://stackoverflow.com/questions/23881891/laravel-4-1-installation-with-composer-in-xampp

仮置きするcomposer.jsonの編集内容

(1) composer.jsonを用意します。エラーのケース2の場合は、composer.jsonは作成されていますので、それを使用しました。
(2) 編集します。composer.jsonの最後に次を追加します。

"repositories": [
     {
          "type": "composer",
           "url": "https://packagist.org"
     },
     { "packagist": false }
 ]

(例)追加した結果(環境依存の値もあると思われますので、自身の環境のcomposer.json)を元にしてください)

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.6.4",
        "laravel/framework": "5.3.*"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~5.0",
        "symfony/css-selector": "3.1.*",
        "symfony/dom-crawler": "3.1.*"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"file_exists('.env') || 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"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
        "repositories": [
             {
                  "type": "composer",
                   "url": "https://packagist.org"
             },
             { "packagist": false }
         ]

}

以上

NextDesign 2016.12.31