Linux環境にCakePHP3をインストールして、composerでプロジェクトを生成するところまで実施します。実際にやってみると、エラーが出て結構はまってしまったので、対処法も記載しておきます。
目次
環境
環境 CentOS7.3 PHP 7.1.4(ソース) CakePHP3.4.6
CakePHP3のダウンロード
以下よりCakePHP3をダウンロードしてきます。
https://getcomposer.org/download/
具体的には、各自の任意ディレクトリにて上記のページに記載されている以下のコマンドを実行します。
1 2 3 4 |
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" |
コマンドを実行すると、カレントディレクトリにcomposer.pharというファイルが生成されるので、指定したパスのディレクトリに移すために以下のコマンドを実行してください。
(/usr/local/bin/ に移動します。)
1 |
mv composer.phar /usr/local/bin/composer |
これにより、composer.pharを指定せずとも、以下のようなcomposerでプロジェクトを立ち上げることが出来ます。
CakePHP3のプロジェクト生成
実際にプロジェクトを生成してみます。
1 |
composer create-project --prefer-dist cakephp/app [任意DIR] |
上記のようにcomporserを使って新たなプロジェクトを作成する場合、存在しないディレクトリ・または空のディレクトリを指定する必要があります。
既にファイルが存在するディレクトリで新たなプロジェクトを作成しようとすると、以下のようなエラーが発生します。
1 |
Project directory [任意DIR] is not empty |
composerのエラー
intlがインストールされていないと、以下のエラーが発生します。こちらのエラーは多々発生しているようで、ググると沢山でてきます。
1 2 3 |
Your requirements could not be resolved to an installable set of packages. Problem 1 - cakephp/cakephp 3.4.7 requires ext-intl * -> the requested PHP extension intl is missing from your system. |
実際にintlがサーバにインストールされているか確認します。
1 |
php -i | grep intl |
何も表示されなければインストールされていませんので、以下のコマンドで追加してみます。
しかし、以下エラー発生。intlはPHP7には対応されてない模様。
1 |
pecl install intl |
1 2 3 4 |
In file included from /root/local/src/intl-3.0.0/php_intl.h:34:0, from /root/local/src/intl-3.0.0/php_intl.c:25: /root/local/src/intl-3.0.0/intl_error.h:24:40: fatal error: ext/standard/php_smart_str.h: No such file or directory #include <ext/standard/php_smart_str.h> |
対応策
phpをソースで入れていたので、ググった結果のものがあまり使えず、少しはまりましたが、いろいろ探った挙句みつけた対応策として、以下の手順でモジュールを追加し、再ビルドすることにしました。
まず、icuが必要みたいなので、こちらをインストールします。
1 |
yum -y install icu libicu-devel |
次にintlを追加して再ビルドします。
1 2 3 4 5 |
cd /[任意DIR]/php-[VERSION]/ext/intl phpize ./configure --enable-intl make make install |
1 |
php -i | grep intl |
確認すると、intlが追加されました。
後は、extensionsのディレクトリにintl.soをセットして、php.iniにも以下を追記。
1 |
extension = intl.so |
再度プロジェクト作成
直前にcomposerで失敗していた場合、中途半端なディレクトリが生成されているので、プロジェクトのディレクトリを一旦削除して、再度コンポーネントでプロジェクトの生成します。
1 |
composer create-project --prefer-dist cakephp/app [任意DIR] |
これで正しく、CakePHP3のプロジェクトが生成されました。