composer installは出来たのにupdateが出来なくて数日間悩んだので、備忘録的に書いていきます。
環境
Windows10(Puttyコマンド使用)
PHP7.4.28
Apache2.4.53
前提
・Apache, PHP, composerのインストールが終わってる
問題と試したこと
composer update
と実行すると、はじめはこんな感じのエラーが。。
PHP Warning: Module 'curl' already loaded in Unknown on line 0
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 0 installs, 10 updates, 0 removals
- Upgrading psy/psysh (v0.11.4 => v0.11.5)
- Upgrading symfony/console (v5.4.8 => v5.4.9)
- Upgrading symfony/error-handler (v5.4.8 => v5.4.9)
- Upgrading symfony/event-dispatcher (v5.4.3 => v5.4.9)
- Upgrading symfony/http-foundation (v5.4.8 => v5.4.9)
- Upgrading symfony/http-kernel (v5.4.8 => v5.4.9)
- Upgrading symfony/mime (v5.4.8 => v5.4.9)
- Upgrading symfony/string (v5.4.8 => v5.4.9)
- Upgrading symfony/translation (v5.4.8 => v5.4.9)
- Upgrading symfony/var-dumper (v5.4.8 => v5.4.9)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 114 installs, 0 updates, 0 removals
In Filesystem.php line 268:
/var/www/html/プロジェクト名/vendor does not exist and could not be created.
update [--with WITH] [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--dry-run] [--dev] [--no-dev] [--lock] [--no-install] [--no-autoloader] [--no-suggest] [--no-progress] [-w|--with-dependencies] [-W|--with-all-dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--apcu-autoloader-prefix APCU-AUTOLOADER-PREFIX] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [-i|--interactive] [--root-reqs] [--] [<packages>...]
最初にPHP Warningっていうのが出ていたので「うわっ!警告出てる!」と思って、そこのエラー文をそのままコピペして検索したら、curlを有効にするといいよ! みたいな情報がでてきました。
その情報の通りに
sudo vim /etc/php.ini
を実行して該当する行を探して、extension=curlを書き込んで、apacheを再起動してみました。
ダメだったので、extension=php_curl.dllにしたりしてみたんですが、それでも上手くいかず。。
解決法
ファイルの権限を書き換えたら上手くいきました。
700でファイルの読み込み・書き込み・実行を全部できるように変更して、composer updateを再実行っと。
sudo chmod 777 プロジェクト名
updateできました!!!
ただ、権限をこのままにしておくとコマンドを打ちまくってるうちに、書き換えない方がいいファイルを知らない間に書き換えちゃった…なんてことが起こりかねないので、後でファイルごとに権限を直しておくことをオススメします。
では今回はこれで^^