##現状
現在ブラウザアクセスができない状態で調査をしていたら、どうやら
php
1// You can remove this if you are confident you have intl installed. 2if (!extension_loaded('intl')) { 3 trigger_error('You must enable the intl extension to use CakePHP.', E_USER_ERROR); 4}
bootstrap.phpに記載されている内容です
intl
が存在していない為エラーになっている事が判明しました。
対象プロジェクトでcomposer install
をしたところ
[vagrant@local profile]$ composer install 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 - cakephp/cakephp 3.1.14 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.14 requires ext-intl * -> the requested PHP extension intl is missing from your system. - Installation request for cakephp/cakephp 3.1.14 -> satisfiable by cakephp/cakephp[3.1.14]. To enable extensions, verify that they are enabled in your .ini files: - /etc/php.ini - /etc/php.d/20-bz2.ini - /etc/php.d/20-calendar.ini - /etc/php.d/20-ctype.ini ・ ・ ・ You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode. [vagrant@local profile]$
このようなエラーが表示されたので、対象の.ini
ファイルの対応をしなくてはならないのかなという感覚を得ている状況です。
##質問
- 対象となる
.ini
ファイルでは主にどういう事をすれば良いのでしょうか?
そもそもエラー内容に対するアプローチ方法、解釈等間違っていたらご指摘下さい。
よろしくお願い致します。
##追記
###ログ1
・intlが存在していないので、yumでinstall
・phpのバージョンが7.1.25なのでphp-71を選択
・sudo yum install php71-php-intl.x86_64
でインストール
→正常にインストール完了
・intl有効化の為に/etc/php.iniファイルのextensionを確認したが、extension=php_intl.dll
の記載が無かったため、追記。
→追記後、httpdを再起動sudo service httpd restart
・php -i | grep intl
コマンドでintlが存在しているか確認
・PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/php_intl.dll' -
/usr/lib64/php/modules/php_intl.dll: cannot open shared object file: No such file or directory in Unknown on line 0
エラーが表示
・php_intl.dll
が/usr/lib64/php/modules/配下に存在していない事によるエラー
・ll /usr/lib64/php/modules/ | grep php_intl.dll
で再度確認
→レスポンスは何もないため、存在していない事を確認
・find / -name php_intl.dll
でphp_intl.dllを検索
・色々表示されたが許可が無いというエラーが表示された
・スーパーユーザーで再度実行
→レスポンスは何もなく
##ログ2
Apacheのerror.log
PHP Fatal error: You must enable the intl extension to use CakePHP. in /vagrant/sample.com/profile/config/bootstrap.php on line 38
対象箇所のコード
php
1// You can remove this if you are confident you have intl installed. 2if (!extension_loaded('intl')) { 3 trigger_error('You must enable the intl extension to use CakePHP.', E_USER_ERROR); 4}
intl
が存在していないという問題は解決してない。
###ログ3
・sudo yum install php71-php-intl.x86_64
でintl
をインストール
・インストール後sudo service httpd restart
でApacheの再起動
・再起動後、対象ディレクトリでcomposer install
実行
→実行後、下記のエラー表示
[vagrant@local profile]$ composer install PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/php_intl.dll' - /usr/lib64/php/modules/php_intl.dll: cannot open shared object file: No such file or directory in Unknown on line 0 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 - cakephp/cakephp 3.1.14 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.14 requires ext-intl * -> the requested PHP extension intl is missing from your system. - Installation request for cakephp/cakephp 3.1.14 -> satisfiable by cakephp/cakephp[3.1.14]. To enable extensions, verify that they are enabled in your .ini files: - /etc/php.ini - /etc/php.d/20-bz2.ini - /etc/php.d/20-calendar.ini - /etc/php.d/20-ctype.ini - /etc/php.d/20-curl.ini - /etc/php.d/20-dom.ini - /etc/php.d/20-exif.ini - /etc/php.d/20-fileinfo.ini - /etc/php.d/20-ftp.ini - /etc/php.d/20-gd.ini - /etc/php.d/20-gettext.ini - /etc/php.d/20-iconv.ini - /etc/php.d/20-json.ini - /etc/php.d/20-mbstring.ini - /etc/php.d/20-mysqlnd.ini - /etc/php.d/20-pdo.ini - /etc/php.d/20-phar.ini - /etc/php.d/20-simplexml.ini - /etc/php.d/20-sockets.ini - /etc/php.d/20-sqlite3.ini - /etc/php.d/20-tokenizer.ini - /etc/php.d/20-xml.ini - /etc/php.d/20-xmlwriter.ini - /etc/php.d/20-xsl.ini - /etc/php.d/30-mysqli.ini - /etc/php.d/30-pdo_mysql.ini - /etc/php.d/30-pdo_sqlite.ini - /etc/php.d/30-wddx.ini - /etc/php.d/30-xmlreader.ini You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode. [vagrant@local profile]$
php --ini
で設定ファイル確認
レスポンスは下記
[vagrant@local profile]$ php --ini PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/php_intl.dll' - /usr/lib64/php/modules/php_intl.dll: cannot open shared object file: No such file or directory in Unknown on line 0 Configuration File (php.ini) Path: /etc Loaded Configuration File: /etc/php.ini Scan for additional .ini files in: /etc/php.d Additional .ini files parsed: /etc/php.d/20-bz2.ini, /etc/php.d/20-calendar.ini, /etc/php.d/20-ctype.ini, /etc/php.d/20-curl.ini, /etc/php.d/20-dom.ini, /etc/php.d/20-exif.ini, /etc/php.d/20-fileinfo.ini, /etc/php.d/20-ftp.ini, /etc/php.d/20-gd.ini, /etc/php.d/20-gettext.ini, /etc/php.d/20-iconv.ini, /etc/php.d/20-json.ini, /etc/php.d/20-mbstring.ini, /etc/php.d/20-mysqlnd.ini, /etc/php.d/20-pdo.ini, /etc/php.d/20-phar.ini, /etc/php.d/20-simplexml.ini, /etc/php.d/20-sockets.ini, /etc/php.d/20-sqlite3.ini, /etc/php.d/20-tokenizer.ini, /etc/php.d/20-xml.ini, /etc/php.d/20-xmlwriter.ini, /etc/php.d/20-xsl.ini, /etc/php.d/30-mysqli.ini, /etc/php.d/30-pdo_mysql.ini, /etc/php.d/30-pdo_sqlite.ini, /etc/php.d/30-wddx.ini, /etc/php.d/30-xmlreader.ini [vagrant@local profile]$
一行目にWarning
/usr/lib64/php/modules/
配下に、php_intl.dll
が存在していないことによるエラー。
###ログ4
php -m | grep intl
で、intl
を検索
※-m
オプションは、読み込まれているモジュールの一覧を表示する
レスポンスは下記
[vagrant@local profile]$ php -m | grep intl PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/php_intl.dll' - /usr/lib64/php/modules/php_intl.dll: cannot open shared object file: No such file or directory in Unknown on line 0 [vagrant@local profile]$
ログ3のphp --ini
を実行したレスポンスのWarning
と同様のWarning
が表示
###ログ5
sudo yum install php71-php-intl.x86_64
でintl
をインストールするまでの手順は、
1. 'php -v' でPHPのバージョン確認 2. 'yum list | grep intl' で 'yum' でインストールできる 'intl' のバージョン検索 3. PHPのバージョンに対応する 'intl' を選択し、 'yum' でインストール
php -v
のレスポンスは下記
[vagrant@local etc]$ php -v PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/php_intl.dll' - /usr/lib64/php/modules/php_intl.dll: cannot open shared object file: No such file or directory in Unknown on line 0 PHP 7.1.25 (cli) (built: Dec 8 2018 13:52:58) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies [vagrant@local etc]$
※現状、バージョン確認時も同様のWarning
が表示
現在のPHPのバージョンは7.1.25
yum list | grep intl
のレスポンスは下記
[vagrant@local etc]$ yum list | grep intl Repository google-chrome is listed more than once in the configuration php71-php-intl.x86_64 7.1.25-2.el7.remi @remi-safe intltool.noarch 0.50.2-7.el7 base perl-libintl.x86_64 1.20-12.el7 base php-intl.x86_64 5.4.16-46.el7 base php54-php-intl.x86_64 5.4.45-16.el7.remi remi-safe php55-php-intl.x86_64 5.5.38-10.el7.remi remi-safe php56-php-intl.x86_64 5.6.39-1.el7.remi remi-safe php70-php-intl.x86_64 7.0.33-1.el7.remi remi-safe php72-php-intl.x86_64 7.2.13-2.el7.remi remi-safe php73-php-intl.x86_64 7.3.0-1.el7.remi remi-safe [vagrant@local etc]$
PHPのバージョンが7.1.25
の為、php71-php-intl.x86_64
を選択。
###ログ6
sudo find / -name intl.so
の実行後レスポンス
[vagrant@local profile]$ sudo find / -name intl.so
/opt/remi/php71/root/usr/lib64/php/modules/intl.so
[vagrant@local profile]$
intl.so
は/opt/remi/php71/root/usr/lib64/php/modules/
配下に存在しているよう。
###ログ7
sudo find / -name php71-php
の実行後レスポンス
[vagrant@local profile]$ sudo find / -name php71-php [vagrant@local profile]$
何も表示されず。
インストールされていない。
##ログ8
sudo yum remove php71-php-intl.x86_64
でintl
の削除
sudo yum install --enablerepo=remi-php71 php-intl
でintl
のインストール
sudo service httpd restart
で再起動
composer install
のレスポンス
[vagrant@local profile]$ composer install Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Nothing to install or update Generating autoload files > Cake\Composer\Installer\PluginInstaller::postAutoloadDump > App\Console\Installer::postInstall Set Folder Permissions ? (Default to Y) [Y,n]? Y No Security.salt placeholder to replace. [vagrant@local profile]$
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/01/07 06:56
2019/01/07 14:31
退会済みユーザー
2019/01/08 02:08 編集