連休明けなので、リハビリ兼ねて軽めな記事を書こうと思います。
検証記事を書こうと思ってLaravelプロジェクト作成しようとしたらインストーラーがなかった。
なので、入れてみるかと思って
composer global require laravel/installer
PHP Deprecated: Return type of Symfony\Component\Console\Helper\HelperSet::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/local/bin/composer/vendor/symfony/console/Helper/HelperSet.php on line 112
Deprecated: Return type of Symfony\Component\Console\Helper\HelperSet::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/local/bin/composer/vendor/symfony/console/Helper/HelperSet.php on line 112
Changed current directory to /Users/******/.composer
Deprecation Notice: preg_match(): Passing null to parameter #4 ($flags) of type int is deprecated in phar:///usr/local/bin/composer/vendor/symfony/console/Input/StringInput.php:66
Deprecation Notice: preg_match(): Passing null to parameter #4 ($flags) of type int is deprecated in phar:///usr/local/bin/composer/vendor/symfony/console/Input/StringInput.php:66
Deprecation Notice: preg_match(): Passing null to parameter #4 ($flags) of type int is deprecated in phar:///usr/local/bin/composer/vendor/symfony/console/Input/StringInput.php:67
Deprecation Notice: preg_match(): Passing null to parameter #4 ($flags) of type int is deprecated in phar:///usr/local/bin/composer/vendor/symfony/console/Input/StringInput.php:69
Deprecation Notice: preg_match(): Passing null to parameter #4 ($flags) of type int is deprecated in phar:///usr/local/bin/composer/vendor/symfony/console/Input/StringInput.php:71
不用意にコマンド打ったらまぁ黄色い。Deprecation Notice祭り。見た目がもうやばいたすけてじょうたい。
とはいえ、なんだかんだLaravel Installerは入ってますが、この不本意な祭りを終わらせるべく記事を書きます。
そんなわけで〜、本記事は、ComposerのUpdate方法の紹介と、Laravel Installerが動作して、Laravel12インストールするところまでを範囲にします。
ぜひ力を抜いてごらんください。
ComposerがDeprecation Notice祭りの原因
- Composerが古い。2020年くらいから更新してなかった。
- PHP 8.2 / 8.3 は “型厳密化” が進み、古い Composer が非推奨 API を多用。
Deprecation Notice祭り解消方法
composer self-update --stable
以上。たったこれだけで、Composerのバージョンは
Composer version 2.8.8 2025-04-04 16:56:46
この通り、新しくなります。素敵。
Composerも新しくなったしさっきのコマンドを実行します。
composer global require laravel/installer
#****いろいろ出てくる
Nothing to modify in lock file
Writing lock file
Installing dependencies from lock file (including require-dev)
Nothing to install, update or remove
というわけで、Installはさっき完了してるので、新しく入るものや変更するものはないんですが、警告は出なくなりました。めでたし。
LaravelInstallerにPATH通してVersionを表示させる
とはいえ、このままだとPATHが通ってないゆえ、PATH通します。
echo 'export PATH="$(composer global config bin-dir --absolute):$PATH"' >> ~/.zshrc
source ~/.zshrc
これでPATHが通りました。
💡 一応やってることの解説
composer global config bin-dir –absolute これの実行結果書き込んでます。
単体で利用するとわかりやすいですが、/Users/****/.composer/vendor/bin
こんな感じでどこにバイナリファイルがあるかを指すコマンドを吐き出して.zshrcに書き込んでます。
PATHが通ったか確認するには下記コマンド
laravel --version
# Laravel Installer 5.14.2
これで確認できたらOK。zsh: command not found: laravel
これが出たら失敗😭
ついでにLaravel12のインストール
とりあえずこの状態で下記コマンド実行。
laravel new my-app
_ _
| | | |
| | __ _ _ __ __ ___ _____| |
| | / _` | __/ _` \ \ / / _ \ |
| |___| (_| | | | (_| |\ V / __/ |
|______\__,_|_| \__,_| \_/ \___|_|
┌ Which starter kit would you like to install? ────────────────┐
│ None │
└──────────────────────────────────────────────────────────────┘
┌ Which testing framework do you prefer? ──────────────────────┐
│ PHPUnit │
└──────────────────────────────────────────────────────────────┘
┌ Would you like to run npm install and npm run build? ────────┐
│ No │
└──────────────────────────────────────────────────────────────┘
cd my-app
php artisan --version
Laravel Framework 12.12.0
Laravelでてきます。かわいいね。
とまぁこんな感じで、適当にインストールしてみました。
ざっくり 3 行まとめ
- 古い Composer (v 2.0.12) のまま
composer global require laravel/installer
を叩くと、PHP 8.2/8.3 で大量の Deprecation Notice が出る。 composer self-update --stable
で Composer を最新版 (v 2.8.x) に上げれば警告は消え、Laravel Installer 5.14 がそのまま使える。laravel: command not found
が出たらecho 'export PATH="$(composer global config bin-dir --absolute):$PATH"' >> ~/.zshrc
で PATH を通すだけ──あとはlaravel new my-app
→php artisan --version
で Laravel 12 が無事動く。
次回はLivewireのレポちゃんと書きます。
コメントを残す