Vagrantでの開発環境作りを進めております。目標はChefでやることなのですが、いったん手動で、諸々整える時期です。最低限の設定しかしておりません。CakePHPを動かせるようにします。
上サイトから、現在の最新、2.5.6安定版をダウンロードして、しかるべきディレクトリに置きます。ディレクトリ名もcakephpと適当に付けておきます。Vagrantfileがあるところに置いておきます。
.
├── .vagrant
│ └── machines
├── Vagrantfile
└── cakephp
├── .editorconfig
├── .gitattributes
├── .gitignore
├── .htaccess
├── .travis.yml
├── CONTRIBUTING.md
├── README.md
├── app
├── build.properties
├── build.xml
├── composer.json
├── index.php
├── lib
├── plugins
└── vendors
tree -L 2 -a
「treeコマンドって、便利だなぁ。」
エラー出て解消する&はまったこと
設定で、Vagrantfileがあるところをrootにしているので、今のところ
「localhost:4567/cakephp」でアクセスができる状態。
アクセスすると大量のエラー。
Warning: strtotime():It is not safe to rely on the system's timezone settings.
You are *required* to use the date.timezone setting or the date_default_timezone_set() function.
In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.
We selected 'UTC' for 'UTC/0.0/no DST' instead in /vagrant/cakephp/lib/Cake/Cache/CacheEngine.php on line 60
Warning: _cake_core_ cache was unable to write 'cake_dev_ja' to File cache in /vagrant/cakephp/lib/Cake/Cache/Cache.php on line 323
Warning: /vagrant/cakephp/app/tmp/cache/persistent/ is not writable in /vagrant/cakephp/lib/Cake/Cache/Engine/FileEngine.php on line 385
Fatal error: Uncaught exception 'CacheException' with message 'Cache engine _cake_core_ is not properly configured.' in /vagrant/cakephp/lib/Cake/Cache/Cache.php:181 Stack trace: #0 /vagrant/cakephp/lib/Cake/Cache/Cache.php(151): Cache::_buildEngine('_cake_core_') #1 /vagrant/cakephp/app/Config/core.php(374): Cache::config('_cake_core_', Array) #2 /vagrant/cakephp/lib/Cake/Core/Configure.php(72): include('/vagrant/cakeph...') #3 /vagrant/cakephp/lib/Cake/bootstrap.php(175): Configure::bootstrap(true) #4 /vagrant/cakephp/app/webroot/index.php(94): include('/vagrant/cakeph...') #5 /vagrant/cakephp/index.php(41): require('/vagrant/cakeph...') #6 {main} thrown in /vagrant/cakephp/lib/Cake/Cache/Cache.php on line 181
「読む気、失せりにけり。」
timezoneを指定する
一番上に、Warning: strtotime():It is not safe to rely on the system's timezone settings.
とあるので、コレを設定してみる。vagrantの中に入って、以下。
[Date]
date.timezone = Asia/Tokyo
上のようにすれば終わり。
app/tmpの権限を変更する
そもそも、Fatalエラー出てるやん。これ治さないと。
app/tmpの権限を777にしちゃえば良いらしい。
sudo chmod -R 777 app/tmp
エラーは消えたけど、違う警告出る。
Warning: SplFileInfo::openFile(/vagrant/cakephp/app/tmp/cache/persistent/myapp_cake_core_file_map): failed to open stream: Permission denied in /vagrant/cakephp/lib/Cake/Cache/Engine/FileEngine.php on line 356
「めんどくさくなってきた。。」
こことか、ここ参考。
http://www.iwaking.com/20121210/740/
http://kwski.net/cakephp-2-x/1009/
言われた通りにやる。
app/Config/core.php
app/Config/core.php
に'mask' => 0666
を追加する。
これでイケルかと思ったら、行けない。おかしい何でだよ!パーミッションも777にさっきしただろ!と思っていたのですが。
よくよくファイルの権限みてみたら、
/app/tmp/cache/persistent
の下の
myapp_cake_core_cake_dev_ja*
myapp_cake_core_file_map*
これらが、755になっていて、777になっていなかった。なんでだ。さっきchmod -R
したじゃん!
(。。けど、なにかしらの仕様により効かないことがあるらしい。詳細未調査。。)
といことで、上記2ファイルも777にして、無事、警告は消えました。
デザインが反映されない問題。
警告は消えたのですが、どうもCSSが反映されていないようで、とてもCakePHPとは思えない、シンプルなデザインになっちゃってるのです。「localhost:4567/cakephp」にアクセスするとこんな感じ。
原因は、URL rewriting らしいので、治す。
vagrant内に入って、以下。
# この行がコメントアウトしてないようにする。
LoadModule rewrite_module modules/mod_rewrite.so
# 以下のようにする。最初は、AllowOverride noneとかになってる。
<Directory "/var/www/html">
Options FollowSymLinks
AllowOverride All
</Directory>
# 補足
# "/var/www/html"部分はhttpd.cnfのDocumentRoot設定を書いておきます。
# 以下のような行があります。
DocumentRoot "/var/www/html"
以上、これでイケル!と思いきや、、、行けない。なんでや!!!!泣きたい。もう打つ手はうった。
「もう寝よう。」
と思ったのですが、もう一度、「httpd.cnf」を見直してみたら。。
<Directory />(中略)</Directory>
がもう一箇所あった。。なぞ。よく分からないけど、下のこっちが効いていたようなので、丁寧にこちらも上記通り書いたら、治りました。(いや、どっちかいらないから、消しとけばいいんだよね。)
URLを綺麗にしておきたい。
今は「localhost:4567/cakephp」という形でアクセスしているけど、だ、ださい。
「localhost:4567」だけにしたい。
ルートは「app/webroot」にすべき!
今のところ
/var/www/html/cakephp/app
と階層構造はなっていて。僕がしたんですけど。
そして、httpdのDocumentRootの設定は、
"/var/www/html/"
となっているので、
「localhost:4567/cakephp」とアクセスしないといけない。
けど、これはダサいので、
localhost:4567でおkとしたい。
そのために
DocumentRoot "/var/www/html/cakephp/app/webroot"
と変更しておきました。
無事、「localhost:4567」だけでアクセスができるようになりました。
ただ、とても分からないのは、
<Directory "/var/www/html">
Options FollowSymLinks
AllowOverride All
</Directory>
この辺は書き換えなくても良いのか?ということです。
そもそも、よくわかってないんだな。orz。悲しい。
一旦このまま進めてみて、問題あれば、確認しよう。
力つきたので、ここ迄です。ありがとうございました。