皆様こんにちは。
本日新しい会社に転職したのですが、その際に開発環境を構築していて、沼にはまったので、その時のことを備忘録として残そうと思います。
エラーログ
[error] 31#31: *3 FastCGI sent in stderr:
PHP message: PHP Fatal error: require(): Failed opening required'/var/www/public/../vendor/autoload.php'
エラー文の意味
vender/autoload.phpを開こうとしたが、失敗した。
対処方法
docker-compose exec php bash # php用のコンテナを用意していたため
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
composer -V
composer install
解説
まず、phpのコンテナ内のbashに入る。
その後、https://getcomposer.org/download/ に従って、composerをインストールする。
インストール後、composerにパスを通し、 composer -V
でcomposerがインストールされていることを確認する。
最後に、composer install
を行って、他のライブラリをインストールする。
最後に
用意されていたDockerfileだと、composerをインストールするコマンドが書いてあったのに、何故かcomposerがインストールされなかった。。
他の人も同様のDockerfileでうまくいっていたようなので、原因は不明。(もしわかったらこの記事に追記します。)