初心者のため、間違いや何かご存じの方がいましたら、教えていただけると助かります。
概要
dockerコンテナ内で、composer create-project laravel/laravel . --prefer-distすると、エラー
環境
windows11
docker-desktop
php: 8.2.7
laravel: v11
エラーメッセージ
以下コード内の
Install of fakerphp/faker failed
Install of voku/portable-ascii failed
Install of symfony/var-dumper failed
Install of symfony/routing failed
Install of symfony/process failed
Install of symfony/polyfill-php72 failed
Install of symfony/polyfill-intl-idn failed
# composer create-project laravel/laravel . --prefer-dist
Creating a "laravel/laravel" project at "./"
Installing laravel/laravel (v11.1.4)
- Installing laravel/laravel (v11.1.4): Extracting archive
Created project in /var/www/html/.
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies
Lock file operations: 107 installs, 0 updates, 0 removals
- Locking brick/math (0.12.1)
- Locking carbonphp/carbon-doctrine-types (3.2.0)
- Locking dflydev/dot-access-data (v3.0.3)
...(省略)
- Installing doctrine/inflector (2.0.10): Extracting archive
- Installing doctrine/lexer (3.0.1): Extracting archive
...(省略)
- Installing myclabs/deep-copy (1.12.0): Extracting archive
- Installing phpunit/phpunit (11.3.1): Extracting archive
33/107 [========>-------------------] 30% Install of fakerphp/faker failed
Install of voku/portable-ascii failed
Install of symfony/var-dumper failed
Install of symfony/routing failed
Install of symfony/process failed
Install of symfony/polyfill-php72 failed
Install of symfony/polyfill-intl-idn failed
In Filesystem.php line 332:
Could not delete /var/www/html/vendor/composer/55e3ab49/FakerPHP-Faker-bfb4fe1/src/Faker/Provide
r/ka_GE:
create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--no-audit] [--audit-format AUDIT-FORMAT] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--ask] [--] [<package> [<directory> [<version>]]]
再実行してみると以下。再度/var/www/html/.に当たる部分を削除して実行しても、上記エラーが出る。
# composer create-project laravel/laravel . --prefer-dist
Creating a "laravel/laravel" project at "./"
In CreateProjectCommand.php line 371:
Project directory "/var/www/html/." is not empty.
解決策
1. エラーメッセージが出た後、しばらく待つと、
Could not delete /var/www/html/vendor/composer/55e3ab49/FakerPHP-Faker-bfb4fe1/src/Faker/Provide
r/ka_GE:
と出てきたので、指示されたフォルダを削除
2. その後、再度
composer install
する。
composer installをした後、vendor/composer内のファイルを見ていると、
tmpファイルや英数字8文字のフォルダ(0c04e16など)がまず大量に作成され、その後、installに伴い、tmpファイルなどが処理されていく。
その際処理できなかった(installできなかった)ものがエラーを起こすように見えた。
なので、エラーの後出てくる指示フォルダをちまちま削除し,composer installする。
3. 1に戻って、繰り返す。
以上を数回繰り返すと、徐々にinstallが成功する。
installするライブラリのダウンロードが順調に進む場合と、失敗する場合がある。(理由まではわからず。)
よく引っかかるのはfakerとlaravel/framework。この2つは手動で各サイトからダウンロードして、vendorにコピペしたほうが速いかもしれない。
また、スペックの高いPCだと、成功が速い印象。
※ 以下参考サイトをもとに、
下記コマンドを実行したが、自分の環境では解決されず。
- rm -Rf vendor/
- rm composer.lock
- composer clear-cache
- composer install
composerは同じバージョンのライブラリはcacheされてしまうので、何度読み込み直してもcacheが残っていると上手くいかないことが多いらしい。