カテゴリー
コンピューター

CakePHP の Composer でのインストールに躓いたとき見る点2つ!

webroot/index.php の編集に失敗した時にチェックするポイント!

  • Composer でインストールし、プロジェクトを bake した時のメッセージをよく読むこと!
  • 編集に失敗したら、ブラウザでエラーの内容をよく確認すること!

なんとも基本的な内容ですこと><。恥ずかしいですわね><。ですけれども小一時間ほどハマってしまいましたので、自戒を込めてポイントをメモいたします。

CAKE_CORE_INCLUDE_PATH を設定するポイント!

  • プロジェクトを bake したときに表示されるハードコードしたパスの内、ルートから CakePHP をインストールしたディレクトリまでのパスを「ROOT . DS . APP_DIR . 」で置き換える

Composer でインストールし、プロジェクトを bake した時のメッセージをよく読むこと!

composer で CakePHP をインストールしたお次は、Vendor/bin/cake にございます bake コマンドでプロジェクトを生成いたします。そうしますと、次のような画面となります。

スクリーンショット 2014-09-08 22.42.15.png

テキストにしますと次のようになりますわね。

[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 に誤った内容を設定してしまいますと、次のようなエラー画面となります。

スクリーンショット 2014-09-08 22.04.15.png

「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 にてインストールいたしましたら、設定するパスが変わっていたために、今回の問題が起きましたの。

結構変わりやすいのかしら?

なんにせよ、盲目的にコピペするのは駄目ですの!ということを思い知らされましたの><。

面倒臭がって忘れたころにまた同じような失敗を、これからも繰り返すのでしょうけれども、少しずつより早く解決できるようになっていきたいですわね♪

以上です。

コメントを残す