#開発環境構築 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のインストールは完了です。
※参考