CakePHP4をCentOS8上にインストールする手順を調べました。
前提条件
Apache、MariaDB、PHPがインストールされたCentOS8上で作業を実施しました。
DBはMySQL、ApacheはNginxでも大丈夫です。
私は以下のバージョンをインストールしました。
・Apache2.4.6
・MariaDB5.5.65
・PHP7.4.10
※CakePHP4はPHP7.2以上が必要です。
作業自体はVirtualbox上のCentOS8を使用しました。
細かいインストール手順については以下の記事類をご参考下さい。
【CentOS8】Apache2.4のインストール手順(dnf使用)と動作確認
【CentOS8】PHP7.4インストール手順
CakePHPのCookbookにはシステム要件が以下のように記載されていましたので、不足がないか確認しておきましょう。
HTTP サーバー。例: Apache。mod_rewrite が推奨されますが、必須ではありません。
PHP 7.2 以上 (PHP 7.4 も含む)
mbstring PHP 拡張
intl PHP 拡張
simplexml PHP 拡張
※DBに関する記述はありませんが、DBを使用する場合は必要。
composerのインストール
まずcomposerをインストールします。
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
権限がないと/usr/local/bin以下にcomposer.pharを移動できません。その場合はcomposerコマンドの代わりに、
phpコマンドを使って「php composer.phar ~」という形で記述をすれば同様に実行可能です。
CakePHP4のインストール
composerコマンドが使える場合(composerにパスが通っている場合)
$ composer self-update && composer create-project --prefer-dist cakephp/app:4.* sample
composerコマンドが使えない場合(パスが通っていない場合)
$ php composer.phar create-project --prefer-dist cakephp/app:4.* sample
上記のコマンドを実行すると、カレントディレクトリに「sample」というディレクトリが出来上がり、sample以下にCakePHP4のプロジェクトが作成されます。別の場所にインストールしたい場合はsampleの代わりにパスを指定して実行すると指定したパスのところにプロジェクトが作成されます。
Virtualbox上でcomposerインストールした際にエラーになった際の対応
composerコマンドが途中でエラーになって、CakePHPがインストールできない場合があったので、その際の対応方法について記載しておきます。
まず、冒頭の前提条件が満たされているかを確認します。PHPの拡張機能はインストール状況によっては有効になっていない場合もあるので、確認しましょう。エラーメッセージで検索すると、大体何が不足している、という情報が出てくるはずです。
拡張機能をインストールしても、私はVirtualboxでどうしても以下のようなエラーが発生してしまい、CakePHP4のインストールが成功しませんでした。
[RuntimeException]
Could not delete vendor/kylekatarnls/update-helper/src/UpdateHelper:
CakePHP3を試してみましたが、やはり同様のエラーが発生し、以下のように「–no-pluging」オプションを付けるという方法でできるという情報を見つけたので試してみましたが、私の環境では上手くいきませんでした。
composer install --no-plugins
色々と調べていたところ、以下の情報を見つけました。
参考
Composer plugin installation failed
CakePHPではなくLaravelのissueに挙げられていますが、どうやらVirtualboxのゲストのCentOSとホストOSでフォルダの共有をした状態で、その共有フォルダ以下でcomposerを実行しようとすると、発生するエラーのようです。
私の場合はホストOS側にPHPとcomposerをインストールし、ホストOS側でcomposerコマンドを実行したところ問題なくインストールができました。もし、VirtualBoxの仮想マシンへのインストールで同様のエラーが発生する方がいた場合は試してみてください。
試していませんが、もしかする共有フォルダ設定を切った状態であれば、ゲストOS上でもインストールできるかもしれません。