CakePHP3を泣きながらインストールした記録
CakePHP3をヒーヒー言いながらなんとかインストールできました(環境はCentOS 6.5)。
いろんなエラーが発生しまくって超めんどくさかった・・。
以下頑張りの記録です。
その1「CakePHP3をインストール」
初めにやること、それは下記コマンドを実行してComposerで「CakePHP3」をインストールすることです。
composer create-project --prefer-dist cakephp/app app_hogegege
ここで大量にエラーが発生してインストールが失敗します、一気にやる気がなくなる瞬間です・・。
Installing cakephp/app (3.1.2) - Installing cakephp/app (3.1.2) Downloading: 100% Created project in app_hogegege Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages. Problem 1 - cakephp/cakephp 3.2.6 requires php >=5.5.9 -> your PHP version (5.4.31) does not satisfy that requirement. - cakephp/cakephp 3.2.5 requires php >=5.5.9 -> your PHP version (5.4.31) does not satisfy that requirement. - cakephp/cakephp 3.2.4 requires php >=5.5.9 -> your PHP version (5.4.31) does not satisfy that requirement. - cakephp/cakephp 3.2.3 requires php >=5.5.9 -> your PHP version (5.4.31) does not satisfy that requirement. - cakephp/cakephp 3.2.2 requires php >=5.5.9 -> your PHP version (5.4.31) does not satisfy that requirement. - cakephp/cakephp 3.2.1 requires php >=5.5.9 -> your PHP version (5.4.31) does not satisfy that requirement. - cakephp/cakephp 3.2.0 requires php >=5.5.9 -> your PHP version (5.4.31) does not satisfy that requirement. - cakephp/cakephp 3.1.9 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.8 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.7 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.6 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.5 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.4 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.3 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.2 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.13 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.12 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.11 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.10 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.1 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.0 requires ext-intl * -> the requested PHP extension intl is missing from your system. - Installation request for cakephp/cakephp ~3.1 -> satisfiable by cakephp/cakephp[3.1.0, 3.1.1, 3.1.10, 3.1.11, 3.1.12, 3.1.13, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.8, 3.1.9, 3.2.0, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6]. To enable extensions, verify that they are enabled in those .ini files: - /etc/php.ini - /etc/php.d/curl.ini - /etc/php.d/fileinfo.ini - /etc/php.d/gd.ini - /etc/php.d/json.ini - /etc/php.d/mbstring.ini - /etc/php.d/mcrypt.ini - /etc/php.d/mysql.ini - /etc/php.d/mysqli.ini - /etc/php.d/pdo.ini - /etc/php.d/pdo_mysql.ini - /etc/php.d/pdo_sqlite.ini - /etc/php.d/phar.ini - /etc/php.d/sqlite3.ini - /etc/php.d/zip.ini You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
どうやら以下の2点に怒っている様子。
・「PHPのバージョンが古い」
・「PHPのextension intlが入っていない」
CakePHP3.1を使いたい場合は「extension intl」の問題だけを解決すればよさそうです。
ということで「intl」なるもののインストールを試みます。
その2「intlのインストール」
# yum list | grep intl php-intl.x86_64 5.3.3-46.el6_7.1 updates #yum install php-intl Error: Package: php-intl-5.3.3-46.el6_7.1.x86_64 (updates) Requires: php-common(x86-64) = 5.3.3-46.el6_7.1 Installed: php-common-5.4.31-1.el6.remi.x86_64 (@remi) php-common(x86-64) = 5.4.31-1.el6.remi Available: php-common-5.3.3-40.el6_6.x86_64 (base) php-common(x86-64) = 5.3.3-40.el6_6 Available: php-common-5.3.3-46.el6_6.x86_64 (updates) php-common(x86-64) = 5.3.3-46.el6_6 Available: php-common-5.3.3-46.el6_7.1.x86_64 (updates) php-common(x86-64) = 5.3.3-46.el6_7.1 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
また何かエラーが山ほど出てきました、もう嫌・・。
レポジトリを「remi」に指定してダウンロードすると良いと誰かから聞いたので試してみます。
# yum --enablerepo=remi install php-intl Installed: php-intl.x86_64 0:5.4.45-7.el6.remi Dependency Installed: libicu-last.x86_64 0:50.1.2-11.el6.remi Dependency Updated: php.x86_64 0:5.4.45-7.el6.remi php-cli.x86_64 0:5.4.45-7.el6.remi php-common.x86_64 0:5.4.45-7.el6.remi php-devel.x86_64 0:5.4.45-7.el6.remi php-gd.x86_64 0:5.4.45-7.el6.remi php-mbstring.x86_64 0:5.4.45-7.el6.remi php-mcrypt.x86_64 0:5.4.45-7.el6.remi php-mysql.x86_64 0:5.4.45-7.el6.remi php-pdo.x86_64 0:5.4.45-7.el6.remi Complete!
今度はインストール成功した、よかった・・。
「intl」もちゃんと有効になっているようです。
#php -m | grep intl intl
その3「再度CakePHP3のインストール」
さっき生成されたCakePHPのディレクトリを削除して、もう一度ComposerでCakePHPをインストールし直します。
#composer create-project --prefer-dist cakephp/app app_hogegege Installing cakephp/app (3.1.2) - Installing cakephp/app (3.1.2) Loading from cache Created project in app_hogegege Loading composer repositories with package information Updating dependencies (including require-dev) - Installing aura/installer-default (1.0.0) Loading from cache - Installing cakephp/plugin-installer (0.0.12) Loading from cache - Installing psr/log (1.0.0) Loading from cache - Installing nesbot/carbon (1.13.0) Loading from cache - Installing mobiledetect/mobiledetectlib (2.8.20) Loading from cache - Installing aura/intl (1.1.1) Loading from cache - Installing ircmaxell/password-compat (v1.0.4) Loading from cache - Installing cakephp/cakephp (3.1.13) Loading from cache - Installing symfony/yaml (v2.8.4) Loading from cache - Installing symfony/filesystem (v2.8.4) Loading from cache - Installing symfony/config (v2.8.4) Loading from cache - Installing symfony/polyfill-mbstring (v1.1.1) Loading from cache - Installing symfony/console (v2.8.4) Loading from cache - Installing robmorgan/phinx (v0.5.1) Loading from cache - Installing cakephp/migrations (1.5.7) Loading from cache - Installing jakub-onderka/php-console-color (0.1) Loading from cache - Installing jakub-onderka/php-console-highlighter (v0.3.2) Loading from cache - Installing dnoegel/php-xdg-base-dir (0.1) Loading from cache - Installing nikic/php-parser (v2.0.1) Loading from cache - Installing symfony/var-dumper (v2.8.4) Loading from cache - Installing psy/psysh (v0.7.2) Loading from cache - Installing jdorn/sql-formatter (v1.2.17) Loading from cache - Installing cakephp/debug_kit (3.2.7) Loading from cache - Installing cakephp/bake (1.1.4) Loading from cache cakephp/app suggests installing phpunit/phpunit (Allows automated tests to be run without system-wide install.) cakephp/app suggests installing cakephp/cakephp-codesniffer (Allows to check the code against the coding standards used in CakePHP.) symfony/console suggests installing symfony/event-dispatcher () symfony/console suggests installing symfony/process () symfony/var-dumper suggests installing ext-symfony_debug () psy/psysh suggests installing ext-posix (If you have PCNTL, you'll want the POSIX extension as well.) psy/psysh suggests installing ext-pdo-sqlite (The doc command requires SQLite to work.) cakephp/debug_kit suggests installing ext-sqlite (DebugKit needs to store panel data in a database. SQLite is simple and easy to use.) Writing lock file Generating autoload files > Cake\Composer\Installer\PluginInstaller::postAutoloadDump
なんとかインストールできたみたいですが、なんだかいっぱい「suggest」されています。
ほんとにこれで大丈夫なのでしょうか・・?
その4「ドキュメント・ルートの設定」
CakePHP3にはビルトインサーバを使った「開発用サーバ」を立てる方法と、「本番用サーバ」を立てる方法の2種類があります。
私はいきなり「本番用サーバ」を立てたかったので、ドキュメント・ルートの設定をします。
CentOSの「virtual.conf」の設定をいじってCakePHPの「webroot」のディレクトリをドキュメント・ルートとして設定します。
<VirtualHost *:80> ServerName /var/www/html/hogege DocumentRoot /var/www/html/hogege/webroot </VirtualHost>
そして、ためしにブラウザからCakePHPのwebページにアクセスしてみると、
「Could not load configuration file: /var/www/html/hogege/config/app.php」
とエラーが出てアクセスができません。やっぱり「suggest」に書いてあるものをちゃんと入れなくてはいけないみたいですね。
はぁ、めんどくさ・・。
その5「phpunitとcakephp-codesniffeをインストール」
composer.jsonファイル内の「suggest」項目にある「phpunit/phpunit」と「cakephp/cakephp-codesniffe」の記述を「require」の項目に移してアップデートを試みます。
"require": { "php": ">=5.4.16", "cakephp/cakephp": "~3.1", "mobiledetect/mobiledetectlib": "2.*", "cakephp/migrations": "~1.0", "cakephp/plugin-installer": "*", "phpunit/phpunit": "*", "cakephp/cakephp-codesniffer": "*" }, "suggest": { },
#composer update - phpunit/phpunit 5.0.10 requires php >=5.6 -> your PHP version (5.4.45) does not satisfy that requirement. - phpunit/phpunit 5.0.1 requires php >=5.6 -> your PHP version (5.4.45) does not satisfy that requirement. - phpunit/phpunit 5.0.0 requires php >=5.6 -> your PHP version (5.4.45) does not satisfy that requirement. - phpunit/phpunit 4.8.9 requires ext-dom * -> the requested PHP extension dom is missing from your system. - phpunit/phpunit 4.8.8 requires ext-dom * -> the requested PHP extension dom is missing from your system. - phpunit/phpunit 4.8.7 requires ext-dom * -> the requested PHP extension dom is missing from your system. - Installation request for phpunit/phpunit * -> satisfiable by phpunit/phpunit[3.7.0, 3.7.1, 3.7.10, 3.7.11, 3.7.12, 3.7.13, 3.7.14, 3.7.15, 3.7.16, 3.7.17, 3.7.18, 3.7.19, 3.7.2, 3.7.20, 3.7.21, 3.7.22, 3.7.23, 3.7.24, 3.7.25, 3.7.26, 3.7.27, 3.7.28, 3.7.29, 3.7.3, 3.7.30, 3.7.31, 3.7.32, 3.7.33, 3.7.34, 3.7.35, 3.7.36, 3.7.37, 3.7.38, 3.7.4, 3.7.5, 3.7.6, 3.7.7, 3.7.8, 3.7.9, 4.0.0, 4.0.1, 4.0.10, 4.0.11, 4.0.12, 4.0.13, 4.0.14, 4.0.15, 4.0.16, 4.0.17, 4.0.18, 4.0.19, 4.0.2, 4.0.20, 4.0.3, 4.0.4, 4.0.5, 4.0.6, 4.0.7, 4.0.8, 4.0.9, 4.1.0, 4.1.1, 4.1.2, 4.1.3, 4.1.4, 4.1.5, 4.1.6, 4.2.0, 4.2.1, 4.2.2, 4.2.3, 4.2.4, 4.2.5, 4.2.6, 4.3.0, 4.3.1, 4.3.2, 4.3.3, 4.3.4, 4.3.5, 4.4.0, 4.4.1, 4.4.2, 4.4.3, 4.4.4, 4.4.5, 4.5.0, 4.5.1, 4.6.0, 4.6.1, 4.6.10, 4.6.2, 4.6.3, 4.6.4, 4.6.5, 4.6.6, 4.6.7, 4.6.8, 4.6.9, 4.7.0, 4.7.1, 4.7.2, 4.7.3, 4.7.4, 4.7.5, 4.7.6, 4.7.7, 4.8.0, 4.8.1, 4.8.10, 4.8.11, 4.8.12, 4.8.13, 4.8.14, 4.8.15, 4.8.16, 4.8.17, 4.8.18, 4.8.19, 4.8.2, 4.8.20, 4.8.21, 4.8.22, 4.8.23, 4.8.24, 4.8.3, 4.8.4, 4.8.5, 4.8.6, 4.8.7, 4.8.8, 4.8.9, 5.0.0, 5.0.1, 5.0.10, 5.0.2, 5.0.3, 5.0.4, 5.0.5, 5.0.6, 5.0.7, 5.0.8, 5.0.9, 5.1.0, 5.1.1, 5.1.2, 5.1.3, 5.1.4, 5.1.5, 5.1.6, 5.1.7, 5.2.0, 5.2.1, 5.2.10, 5.2.11, 5.2.12, 5.2.2, 5.2.3, 5.2.4, 5.2.5, 5.2.6, 5.2.7, 5.2.8, 5.2.9, 5.3.0, 5.3.1]. To enable extensions, verify that they are enabled in those .ini files: - /etc/php.ini - /etc/php.d/curl.ini - /etc/php.d/fileinfo.ini - /etc/php.d/gd.ini - /etc/php.d/gmp.ini - /etc/php.d/intl.ini - /etc/php.d/json.ini - /etc/php.d/mbstring.ini - /etc/php.d/mcrypt.ini - /etc/php.d/mysql.ini - /etc/php.d/mysqli.ini - /etc/php.d/pdo.ini - /etc/php.d/pdo_mysql.ini - /etc/php.d/pdo_sqlite.ini - /etc/php.d/phar.ini - /etc/php.d/sqlite3.ini - /etc/php.d/zip.ini
まーたいっぱいエラーが出てきました。「ext-dom」というのをインストールしろとお怒りのようです。
なんでしょうかこの気持ち、率直に言ってもう死にたいですね。
その6「PHP ext-domのインストール」
「ext-dom」というのをインストールすればいいんですね、それで許してくれるのですね。
いいでしょう、インストールしましょう。
# yum install --enablerepo=remi php-dom Installed: php-xml.x86_64 0:5.4.45-7.el6.remi Dependency Installed: libxslt.x86_64 0:1.1.26-2.el6_3.1 Complete!
はい、インストールしました!
その7「再度composer update」
さてComposerで再度アップデートを試みます。
# composer update Loading composer repositories with package information Updating dependencies (including require-dev) - Installing sebastian/version (1.0.6) Downloading: 100% - Installing sebastian/global-state (1.1.1) Downloading: 100% - Installing sebastian/recursion-context (1.0.2) Downloading: 100% - Installing sebastian/exporter (1.2.1) Downloading: 100% - Installing sebastian/environment (1.3.5) Downloading: 100% - Installing sebastian/diff (1.4.1) Downloading: 100% - Installing sebastian/comparator (1.2.0) Downloading: 100% - Installing doctrine/instantiator (1.0.5) Downloading: 100% - Installing phpdocumentor/reflection-docblock (2.0.4) Downloading: 100% - Installing phpspec/prophecy (v1.6.0) Downloading: 100% - Installing phpunit/php-text-template (1.2.1) Downloading: 100% - Installing phpunit/phpunit-mock-objects (2.3.8) Downloading: 100% - Installing phpunit/php-timer (1.0.7) Downloading: 100% - Installing phpunit/php-token-stream (1.4.8) Downloading: 100% - Installing phpunit/php-file-iterator (1.4.1) Downloading: 100% - Installing phpunit/php-code-coverage (2.2.4) Downloading: 100% - Installing phpunit/phpunit (4.8.24) Downloading: 100% - Installing squizlabs/php_codesniffer (2.6.0) Downloading: 100% - Installing cakephp/cakephp-codesniffer (2.0.6) Downloading: 100% sebastian/global-state suggests installing ext-uopz (*) phpdocumentor/reflection-docblock suggests installing dflydev/markdown (~1.0) phpdocumentor/reflection-docblock suggests installing erusev/parsedown (~1.0) phpunit/phpunit-mock-objects suggests installing ext-soap (*) phpunit/php-code-coverage suggests installing ext-xdebug (>=2.2.1) phpunit/phpunit suggests installing phpunit/php-invoker (~1.1) Writing lock file Generating autoload files > Cake\Composer\Installer\PluginInstaller::postAutoloadDump
まだ「suggest」があるようですね・・。
ためしにもう一度ブラウザでページを確認してみてもやはり
「Could not load configuration file: /var/www/html/hogege/config/app.php」
が表示されます。
お母さん助けて・・。
その8「composer install」
ここで賢者モードになった私は考えました、そもそも「app.php」とはなんなんでしょうか。
他の人のブログでインストール時のログを見ると、どうもインストール最初の段階で生成されるファイルのようです。
そこでおもむろに「composer install」を実行してみます。
#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 Created `config/app.php` file Set Folder Permissions ? (Default to Y) [Y,n]? Y Permissions set on /var/www/html/hogege/tmp/cache Permissions set on /var/www/html/hogege/tmp/cache/models Permissions set on /var/www/html/hogege/tmp/cache/persistent Permissions set on /var/www/html/hogege/tmp/cache/views Permissions set on /var/www/html/hogege/tmp/sessions Permissions set on /var/www/html/hogege/tmp/tests Permissions set on /var/www/html/hogege/tmp Permissions set on /var/www/html/hogege/logs Updated Security.salt value in config/app.php
そうするとどうでしょう!「app.php」が生成されたではありませんか!
webページにアクセスするとちゃんとおなじみのCakePHPのロゴも表示されています!
そうです「composer update」だけではなくて「composer install」も叩かないといけなかったんですね。そういうことだったんですね・・。
こうして艱難辛苦を乗り越えて無事にインストールできたCakePHP3ですが、しかしたかがインストールするだけでこんなに時間を費やしてしまうとは、一体何事でしょうか・・。
こんな具合で開発の段になったら一体どれほど時間を喰らってくれるのか、この先不安でしょうがありません・・。
※P.S.
インストール後「Hello World」を表示させるとこまでの解説は以下をご参照ください!
moblog.absgexp.net