【CakePHP4】composer install時にエラーが発生「the requested PHP extension intl is missing from your system」解決方法

【CakePHP4】composer install時にエラーが発生「the requested PHP extension intl is missing from your system」解決方法
2021年08月02日2023年10月10日

新しい開発環境でCakePHP4をinstallしようとしたら、「composer install」でエラーが発生しました。

今回のエラーは「ext-intl」のエラーですが、解決方法をまとめました。

エラーの内容

「composer install」を実行したところ下記のエラーが発生しました。

[root@localhost cakephp]# /usr/local/bin/composer install
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for cakephp/cakephp 4.2.7 -> satisfiable by cakephp/cakephp[4.2.7].
    - cakephp/cakephp 4.2.7 requires ext-intl * -> the requested PHP extension intl is missing from your system.
  Problem 2
    - cakephp/cakephp 4.2.7 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/debug_kit 4.4.3 requires cakephp/cakephp ^4.2.0 -> satisfiable by cakephp/cakephp[4.2.7].
    - Installation request for cakephp/debug_kit 4.4.3 -> satisfiable by cakephp/debug_kit[4.4.3].

  To enable extensions, verify that they are enabled in your .ini files:
    - /etc/php.ini
    - /etc/php.d/10-opcache.ini
    - /etc/php.d/20-bz2.ini

~省略~

  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

どうやら、下記の文言を翻訳したらPHPの拡張ライブラリが足りてなかったようです。

the requested PHP extension intl is missing from your system
翻訳:要求されたPHP拡張機能intlがシステムにありません

PHPのライブラリであるintlがインストールされている確認してみます。

[root@localhost cakephp]# php -m | grep intl
[root@localhost cakephp]#

たしかにインストールされていなかった。

解決方法「intl」のインストール

このエラーの解決方法は、足りていない「intl」ライブラリをインストールすると解決します。

まず、自分の環境のPHPのバージョンを確認します。

[root@localhost cakephp]# php -v
PHP 7.4.21 (cli) (built: Jun 29 2021 15:17:15) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.21, Copyright (c), by Zend Technologies

私の環境は「PHP7.4」なので、remiのバージョンも同じバージョンを指定してPHPライブラリをインストールします。

[root@localhost cakephp]# yum --enablerepo=remi-php74 install php-intl
~省略~
Complete!

remiのバージョンを指定せずに実行すると、違うバージョンを参照してかエラーが出るので必ず指定しましょう。

Resolving Dependencies
--> Running transaction check
---> Package php-intl.x86_64 0:5.4.45-18.el7.remi will be installed
--> Processing Dependency: php-common(x86-64) = 5.4.45-18.el7.remi for package: php-intl-5.4.45-18.el7.remi.x86_64
--> Finished Dependency Resolution
Error: Package: php-intl-5.4.45-18.el7.remi.x86_64 (remi)

インストールができたか確認するには、最初に実行したコマンドをもう一度実行します。

[root@localhost cakephp]# php -m | grep intl
intl

「intl」と表示されたら無事インストールができています。

エラーの原因が解決したところで、composer installを実行してみます。

[root@localhost cakephp]# /usr/local/bin/composer install
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 94 installs, 0 updates, 0 removals
  - Installing cakephp/plugin-installer (1.3.1): Downloading (100%)
  - Installing squizlabs/php_codesniffer (3.5.8): Downloading (100%)
  - Installing dealerdirect/phpcodesniffer-composer-installer (v0.7.1): Loading from cache
  - Installing psr/http-message (1.0.1): Loading from cache
~省略~
Created `/vagrant_data/genba/cakephp/tmp/sessions` directory
Created `/vagrant_data/genba/cakephp/tmp/tests` directory
Set Folder Permissions ? (Default to Y) [Y,n]? yes
This is not a valid answer. Please choose Y or n.
Set Folder Permissions ? (Default to Y) [Y,n]? Y
Updated Security.salt value in config/app_local.php
[root@localhost cakephp]#

問題なくインストールできました。

さいごに

「よしこれから開発するぞー」という時にcomposer installでエラーが発生すると一気にやる気なくしますね。

コメント

コメントを残す

お名前(任意)
コメント:新規