#開発環境構築 CentOS7 編【#cakephp3】

前回、開発環境構築 CentOS7編【#3】 でPHPとMySQLのインストールについてメモしました。
今回はCakePHPのインストールとアプリケーションの設定についてメモしていこうと思います。

システム要件

CakePHP3を動かすためには、システム要件を満たさないといけません。
今回は、CakePHP3.6をインストールしますが下記のようなシステム要件となっています。

・HTTP サーバー。例: Apache。mod_rewrite が推奨されますが、必須ではありません。
・PHP 5.6.0 以上 (PHP 7.2 も含む)
・mbstring PHP 拡張
・intl PHP 拡張
・simplexml PHP 拡張

作業ディレクトリ

[vagrant@localhost xxxx]$ 
/home/vagrant/centos7/xxxx //好きなディレクトリ名

・PHPバージョンの確認

$ php -v
PHP 7.2.7 (cli) (built: Jun 20 2018 08:21:26) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
   with Zend OPcache v7.2.7, Copyright (c) 1999-2018, by Zend Technologies

・拡張モジュールの確認

$ php -m | grep -e mbstring -e intl -e SimpleXML
mbstring
SimpleXML

・導入可能なintl検索

$ yum list | grep intl

$ sudo yum install -y php72-php-intl.x86_64

php.iniに下記のように設定します。

$ vi /etc/php.ini

#追記
extension=php_intl.dll

Composerのインストール

CakePHP3系はComposerで基本的にインストールします。なので、Composerをインストールします。

・新規登録する場合

#rootに
$ sudo -i
$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer
$ exit
$ composer --version

・既にインストール済みの場合

$ composer self-update
$ composer --version

CakePHP3.6のインストール

以下のコマンドを実行すると、必要なモジュールがダウンロードされ、指定した名前でCakePHPのプロジェクトが作成されます。
プロジェクトを作成するディレクトリで実行してください。
[プロジェクト名]は便宜変更してください。

$ composer create-project --prefer-dist cakephp/app [プロジェクト名]

失敗…

$ composer create-project --prefer-dist cakephp/app xxxx
PHP Warning:  PHP Startup: Unable to load dynamic library 'php_intl.dll'
(tried: /usr/lib64/php/modules/php_intl.dll (/usr/lib64/php/modules/php_intl.dll: cannot open shared object file: No such file or directory)

■はまりポイント
CakePHP3では動作環境にintlが無い、もしくは有効になっていないと動かせないので導入が必要。
先程、php.iniに

$ vi /etc/php.ini

#追記
extension=php_intl.dll

としましたが、intl.soが格納されているディレクトリしっかりパスを通さないとcakephpをインストールできないようでした。

・PHP intlが有効かどうか確認

$ php -i | grep intl
//実行結果
/etc/php.d/20-intl.ini,
intl
intl.default_locale => no value => no value
intl.error_level => 0 => 0
intl.use_exceptions => 0 => 0

もし表示されなければintl導入

■PHP intl導入と有効化

PHP7.2だったので、それに対応するものを導入。

//導入可能なintl検索
# yum list | grep intl
//インストール
# yum install php72-php-intl.x86_6

大抵のコレだけでintl有効、もしくはphp.iniに以下追記で有効化されが、私の環境では有効化されなかったので、そもそもextension_dirにモジュール追加されているのか確認してみると、別のディレクトリに格納されていた。

;extension_dirのパス
extension_dir => /usr/lib64/php/modules

;intlが格納されてたパス
/opt/remi/php70/root/usr/lib64/php/modules/intl.so

多分remiから持ってきたので、remi配下に格納されたよう。
こういう時はextension_dirにコピペするか、フルパス指定のいずれかで解決。

# vi /etc/php.ini

//下記に変更
extension=/opt/remi/php70/root/usr/lib64/php/modules/intl.so

解決しました。

以上でcakephpのインストールは完了です。

※参考

CakePHP3でintl導入時につまずいた事

CakePHP3.6をLAMP・LNMP環境へインストールする

この記事が気に入ったらサポートをしてみませんか?