ローカル環境にLaravelをインストールしようとしたところ以下のようなエラーが発生した場合の対処法をまとめておきます。
エラーの内容
composerがインストールされている状態で、Laravelのプロジェクトを構築する以下のコマンドを実行。
$ composer create-project laravel/laravel <プロジェクト名> --prefer-dist
すると、以下のようなエラーが発生。
Your requirements could not be resolved to an installable set of packages.
Problem 1
- laravel/framework[v7.29.0, ..., 7.x-dev] require league/flysystem ^1.1 -> satisfiable by league/flysystem[1.1.0, ..., 1.x-dev].
- league/flysystem[1.1.0, ..., 1.x-dev] require ext-fileinfo * -> it is missing from your system. Install or enable PHP's fileinfo extension.
- Root composer.json requires laravel/framework ^7.29 -> satisfiable by laravel/framework[v7.29.0, ..., 7.x-dev].
To enable extensions, verify that they are enabled in your .ini files:
- C:\php\php.ini
You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode.
Alternatively, you can run Composer with `--ignore-platform-req=ext-fileinfo` to temporarily ignore these required extensions.
パッケージをインストールできませんでしたという内容です。
「Problem 1」のところを読むと、Laravelは「league/flysystem」を必要とする。この「league/flysystem」が「ext-fileinfo」を必要とする。
しかし「ext-fileinfo」が入っていない、あるいは許可されていないというエラーです。
なお、このメッセージはLaravelがcomposer installを実行して必要なパッケージをインストールしようとした際に発生しています。
対処法
手順
対処法は簡単で、php.iniファイルに「extension=php_fileinfo.dll」を追記します。もし、既に記述がある場合はコメントアウトを外します。
extension=php_fileinfo.dll
(私の場合は存在しなかったので、追記しました)
php.iniを保存したら、以下を実行してパッケージをインストールし直します。
composer install
パッケージのインストールが完了したら、Laravelを起動します。
$ php artisan serve
「Laravel development server started: http://127.0.0.1:8000」と表示されれば完了です。
なお、http://127.0.0.1:8000にアクセスしたときに「No application encryption key has been specified」と表示された場合の対処法は下記をご参考ください。
【Laravel】エラー対処法:No application encryption key has been specified|Your app key is missing
実例
php.iniが 「c > php > php.ini」のパスにある場合に、VSCodeを使ってファイルを開くときは以下のようになります。
code c:/php/php.ini
ファイルの末尾に以下を書き加えます。
;for laravel
extension=php_fileinfo.dll
ファイルを保存して閉じて「composer install」を実行します。するとパッケージのインストールが始まります。
$ composer install
Loading composer repositories with package information
Updating dependencies
Lock file operations: 99 installs, 0 updates, 0 removals
- Locking asm89/stack-cors (v2.1.1)
- Locking brick/math (0.9.3)
(省略)
Package manifest generated successfully.
69 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
以上でパッケージのインストールは完了です。
あとは、「php artisan serve」を実行するとLaravelが起動します。
$ php artisan serve
Laravel development server started: http://127.0.0.1:8000
php.iniとは何か?
php.iniとはPHPを使うための設定ファイルです。自分の環境でphp.iniファイルがどこにあるか(パスはどこか)は以下で確認できます。
php --ini
実行すると以下のようになります。
$ php --ini
Configuration File (php.ini) Path: C:\WINDOWS
Loaded Configuration File: C:\php\php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
php.iniの場所は「C:\php\php.ini」であることがわかります。
ディレクトリやファイルが存在しない時の対処法|’C:phpphp.ini’: No such file or directory
「php –ini」で表示されたphp.iniファイルのファイルパス「C:\php\php.ini」をコピペしてターミナルで場所を指定しても存在しないと表示されます。
$ less C:\php\php.ini
'C:phpphp.ini': No such file or directory
これはディレクトリの指定方法が間違っているためです。ターミナルにはバックスラッシュ「\」で表示されていますが、これをスラッシュ「/」に変更する必要があります。
NG: C:\php\php.ini
↓
OK: C:/php/php.ini
これでファイルのパスを正しく参照することができます。
$ less C:/php/php.ini
実行するとファイルの中身が以下のように表示されます。
[PHP]
;;;;;;;;;;;;;;;;;;;
; About php.ini ;
;;;;;;;;;;;;;;;;;;;
; PHP's initialization file, generally called php.ini, is responsible for
; configuring many of the aspects of PHP's behavior.
; PHP attempts to find and load this configuration from a number of locations.
; The following is a summary of its search order:
; 1. SAPI module specific location.
; 2. The PHPRC environment variable. (As of PHP 5.2.0)
; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0)
; 4. Current working directory (except CLI)
; 5. The web server's directory (for SAPI modules), or directory of PHP
; (otherwise in Windows)
; 6. The directory from the --with-config-file-path compile time option, or the
; Windows directory (C:\windows or C:\winnt)
; See the PHP docs for more specific information.
; http://php.net/configuration.file
C:/php/php.ini
補足:対処法のヒント
対処法のヒントもエラーの中に記述してあります。
php.iniファイルを編集して対象の拡張機能を有効化してくださいとのこと。
Your requiTo enable extensions, verify that they are enabled in your .ini files:
- C:\php\php.ini
You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode.
Alternatively, you can run Composer with `--ignore-platform-req=ext-fileinfo` to temporarily ignore these required extensions.