開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. PHP >
  4. Composer installでライブラリが上手く読み込めない場合の対処法

Composer installでライブラリが上手く読み込めない場合の対処法

こんにちは。
ニシザワです。

PHPのpackagistでComposerを使っている方が多いと思います。
ただ、必要なライブラリをComposerでインストールしても、たまにClassが見つからないなんて出てきて、困ってしまうことがあります。
今回は、Composer installでライブラリを上手く読み込めない場合の対処法を書きます。

classを再読込してみる

composer dump-autoload
classはautoload.phpで管理されているので、こちらの更新が必要かもしれません。

キャッシュを消して再インストールしてみる

rm -Rf vendor/
rm composer.lock
composer clear-cache
composer install
composerは同じバージョンのライブラリはcacheされてしまうので、何度読み込み直してもcacheが残っていると上手くいかないことが多いです。

それでも治らない場合の最終手段

composer.lockファイルに該当のパッケージが書いてあるのでそれを探しに行く。
        {
            "name": "symfony/http-foundation",
            "version": "v2.7.21",
            "source": {
                "type": "git",
                "url": "https://github.com/symfony/http-foundation.git",
                "reference": "444e5d19d61447f6f829c90a32aae73773f2777f"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/444e5d19d61447f6f829c90a32aae73773f2777f",
                "reference": "444e5d19d61447f6f829c90a32aae73773f2777f",
                "shasum": ""
            },
            "require": {
                "php": ">=5.3.9",
                "symfony/polyfill-mbstring": "~1.1"
            },
            "require-dev": {
                "symfony/expression-language": "~2.4"
            },
            "type": "library",
            "extra": {
                "branch-alias": {
                    "dev-master": "2.7-dev"
                }
            },
            "autoload": {
                "psr-4": {
                    "Symfony\\Component\\HttpFoundation\\": ""
                },
                "classmap": [
                    "Resources/stubs"
                ],
                "exclude-from-classmap": [
                    "/Tests/"
                ]
            },
            "notification-url": "https://packagist.org/downloads/",
            "license": [
                "MIT"
            ],
            "authors": [
                {
                    "name": "Fabien Potencier",
                    "email": "fabien@symfony.com"
                },
                {
                    "name": "Symfony Community",
                    "homepage": "https://symfony.com/contributors"
                }
            ],
            "description": "Symfony HttpFoundation Component",
            "homepage": "https://symfony.com",
            "time": "2016-11-13 17:41:36"
        },
例えばsymfony/http-foundationならこんな感じで書いてある。
ここの、"type": "zip",に書いてあるURLが実ファイルの取得場所なので そこへブラウザで直接アクセスして、ライブラリを取得する。
それをそのまま、vendorに入れればOK

ちょっと強引なやり方だが、確実なので試してみてください。
TOPに戻る