メシのタネ

メシのタネになる、Laravelや設計思想の技術配信サイト


Composer 2.0.12 を使い続けた結果、Laravel Installer5.14 インストールが警告まみれになった件


  1. Laravel
  2. Composer 2.0.12 を使い続けた結果、Laravel Installer5.14 インストールが警告まみれになった件

連休明けなので、リハビリ兼ねて軽めな記事を書こうと思います。

検証記事を書こうと思って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 行まとめ

  1. 古い Composer (v 2.0.12) のまま composer global require laravel/installer を叩くと、PHP 8.2/8.3 で大量の Deprecation Notice が出る。
  2. composer self-update --stable で Composer を最新版 (v 2.8.x) に上げれば警告は消え、Laravel Installer 5.14 がそのまま使える。
  3. laravel: command not found が出たら echo 'export PATH="$(composer global config bin-dir --absolute):$PATH"' >> ~/.zshrc で PATH を通すだけ──あとは laravel new my-appphp artisan --version で Laravel 12 が無事動く。

次回はLivewireのレポちゃんと書きます。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.