webroot/index.php の編集に失敗した時にチェックするポイント!
- Composer でインストールし、プロジェクトを bake した時のメッセージをよく読むこと!
- 編集に失敗したら、ブラウザでエラーの内容をよく確認すること!
なんとも基本的な内容ですこと><。恥ずかしいですわね><。ですけれども小一時間ほどハマってしまいましたので、自戒を込めてポイントをメモいたします。
CAKE_CORE_INCLUDE_PATH を設定するポイント!
- プロジェクトを bake したときに表示されるハードコードしたパスの内、ルートから CakePHP をインストールしたディレクトリまでのパスを「ROOT . DS . APP_DIR . 」で置き換える
Composer でインストールし、プロジェクトを bake した時のメッセージをよく読むこと!
composer で CakePHP をインストールしたお次は、Vendor/bin/cake にございます bake コマンドでプロジェクトを生成いたします。そうしますと、次のような画面となります。
テキストにしますと次のようになりますわね。
[root@localhost cake1]# Vendor/bin/cake bake project /var/www/html/cake1/ Welcome to CakePHP v2.5.4 Console --------------------------------------------------------------- App : cake1 Path: /var/www/html/cake1/ --------------------------------------------------------------- Skel Directory: /var/www/html/cake1/Vendor/cakephp/cakephp/lib/Cake/Console/Templates/skel Will be copied to: /var/www/html/cake1/ --------------------------------------------------------------- Look okay? (y/n/q) [y] > y --------------------------------------------------------------- Created: cake1 in /var/www/html/cake1/ --------------------------------------------------------------- * Random hash key created for 'Security.salt' * Random seed created for 'Security.cipherSeed' * Cache prefix set * app/Console/cake.php path set. CakePHP is not on your `include_path`, CAKE_CORE_INCLUDE_PATH will be hard coded. You can fix this by adding CakePHP to your `include_path`. * CAKE_CORE_INCLUDE_PATH set to /var/www/html/cake1/Vendor/cakephp/cakephp/lib in webroot/index.php * CAKE_CORE_INCLUDE_PATH set to /var/www/html/cake1/Vendor/cakephp/cakephp/lib in webroot/test.php * Remember to check these values after moving to production server Project baked successfully! [root@localhost cake1]#
ここで大事なのは、
- webroot/index.php の CAKE_CORE_INCLUDE_PATH には 次のパスを直書きしているから気をつけてね!
- webroot/test.php の CAKE_CORE_INCLUDE_PATH には 次のパスを直書きしているから気をつけてね!
ということで、直に書いたパスは「/var/www/html/cake1/Vendor/cakephp/cakephp/lib」でございます。
このパスの内、「/var/www/html/cake1」がルートから CakePHP をインストールしたディレクトリまでのパスです。これを「ROOT . DS . APP_DIR . 」で置き換えることがポイントですの!
編集に失敗したら、ブラウザでエラーの内容をよく確認すること!
たとえば以前インストールした内容をそのままコピーして CAKE_CORE_INCLUDE_PATH に誤った内容を設定してしまいますと、次のようなエラー画面となります。
「Warning: include(/var/www/html/cake1/Vendor/pear-pear.cakephp.org/CakePHP/Cake/bootstrap.php): failed to open stream: No such file or directory in /var/www/html/cake1/webroot/index.php on line 85」
などと書かれておりますが、これをしっかりと読み込みましょう。
「警告:include(/var/www/html/cake1/Vendor/pear-pear.cakephp.org/CakePHP/Cake/bootstrap.php):ストリーム開けなかったよ。。。:さっきのファイル、/var/www/html/cake1/webroot/index.php の 85 行目にそんなのはなかったよ。。。」
ここでのポイントは、include() のカッコの中身ですわ。カッコの中の内容が、webroot/index.php の CAKE_CORE_INCLUDE_PATH に設定した値ですの。
include() のカッコの中身がプロジェクトを bake した時に表示されたメッセージ、CAKE_CORE_INCLUDE_PATH の値はフルパスを直書きしたよ!のパスと異なるためにエラーとなっているのです♪
おわりに
このときからしばらく時間が空いて Composer にてインストールいたしましたら、設定するパスが変わっていたために、今回の問題が起きましたの。
結構変わりやすいのかしら?
なんにせよ、盲目的にコピペするのは駄目ですの!ということを思い知らされましたの><。
面倒臭がって忘れたころにまた同じような失敗を、これからも繰り返すのでしょうけれども、少しずつより早く解決できるようになっていきたいですわね♪
以上です。