composerの移動先を間違えたときの話
ローカル開発環境のVagrant+VirtualBoxで作ったCentOSの
/var/www/html/
配下にLaravelを入れようとして格闘したのでメモします。
結論から言うと、
composer.phar
を/usr/local/bin/composer
に名前変更
mv composer.phar /usr/local/bin/composer
するのではなく、
mv composer.phar /usr/local/bin/composer/composer.phar
と、composerディレクトリをつくってその配下に移動してしまったこと が原因です。
以下、調査方法です。
cd \var\www\html
laravel new laravel
Crafting application... PHP Warning: file_put_contents(/var/www/html/laravel_591a618f398466590af59573919f776f.zip): failed to open stream: Permission denied in /home/vagrant/.config/composer/vendor/laravel/installer/src/NewCommand.php on line 133 PHP Warning: ZipArchive::extractTo(): Permission denied in /home/vagrant/.config/composer/vendor/laravel/installer/src/NewCommand.php on line 151 PHP Warning: ZipArchive::close(): Invalid or uninitialized Zip object in /home/vagrant/.config/composer/vendor/laravel/installer/src/NewCommand.php on line 153 You should verify that the "storage" and "bootstrap/cache" directories are writable. In Process.php line 334: The provided cwd does not exist. new [--dev] [--force] [--] [<name>]
composer周りでエラーが出た模様?
とりあえず権限を確認しました。
pwd
/var/www
ll
ll total 8 drwxr-xr-x. 2 root root 4096 Jun 27 13:49 cgi-bin drwxr-xr-x. 2 root root 4096 Jun 27 13:49 html
chown vagrant:vagrant html
chown: changing ownership of ‘html’: Operation not permitted
権限変更の権限がないと出たのでsudo
を使います。
sudo chown vagrant:vagrant html
ll
total 8 drwxr-xr-x. 2 root root 4096 Jun 27 13:49 cgi-bin drwxr-xr-x. 2 vagrant vagrant 4096 Jun 27 13:49 html
改めてLaravelを入れようと思います。
cd html/
laravel new laravel
Crafting application... sh: composer: command not found Application ready! Build something amazing.
ls
laravel
入ったは入ったけど、composerコマンドがないといわれてる…?
pwd
/usr/local/bin/composer
php composer.phar -V
Composer version 1.8.0 2018-12-03 10:31:16
それなら、直接php composer.phar
をたたいてやれ!と(Laravel用のファイルはあとで移動しようと思ってました)
php composer.phar global create-project --prefer-dist laravel/laravel laravel "5.7.*"
Changed current directory to /home/vagrant/.config/composer The "https://repo.packagist.org/packages.json" file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed Failed to enable crypto failed to open stream: operation failed https://repo.packagist.org could not be fully loaded, package information was loaded from the local cache and may be out of date [Composer\Downloader\TransportException] The "https://packagist.org/p/laravel/laravel%243bc08c6b87557c6612c4ffd6e23bd5099550031af06600dc0e757449c cbea91d.json" file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed Failed to enable crypto failed to open stream: operation failed create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--ignore-platform-reqs] [--] [<package>] [<directory>] [<version>]
composer global create-project
コマンドを使うためには、OpenSSLが必要っぽい…?ですね。
ローカル環境にはちょっと難しく見えたのでここで断念。
このあたりで、冒頭でcomposerの移動先を間違えたことに気が付きました…。
composer周りのミスに気が付いたところで、改めてlaravelコマンドを実行してみましょう。
laravel new laravel/
-bash: laravel: command not found
laravel コマンドがないといわれてます……ナンデ。
echo $PATH
/home/vagrant/.config/composer/vender/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/vagrant/.local/bin:/home/vagrant/bin
ll /home/vagrant/.config/composer/vendor/bin/
total 0 lrwxrwxrwx. 1 vagrant vagrant 28 Dec 16 15:33 laravel -> ../laravel/installer/laravel
パスも間違いなく通ってるように見えるのですが…。
今回は細かい原因追及をやめ、直叩きで実行できないか確認してみます。
/home/vagrant/.config/composer/vendor/bin/laravel -V
Laravel Installer 2.0.1
直叩きならうまくいってますね。今回はこちらでいきます。
cd /var/www/html/
/home/vagrant/.config/composer/vendor/bin/laravel new laravel
Crafting application... Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Package operations: 86 installs, 0 updates, 0 removals ~略~ Application ready! Build something amazing.
ls
laravel
ようやく…ようやくできました…。
本番環境ではblog
ディレクトリでLaravelを入れてしまったので、開発環境で作ってるものがリリースされる時に修正しようと思います。