Help us understand the problem. What is going on with this article?

Vagrantで設定を進める、CakePHP編

More than 5 years have passed since last update.

Vagrantでの開発環境作りを進めております。目標はChefでやることなのですが、いったん手動で、諸々整える時期です。最低限の設定しかしておりません。CakePHPを動かせるようにします。

http://cakephp.jp/

上サイトから、現在の最新、2.5.6安定版をダウンロードして、しかるべきディレクトリに置きます。ディレクトリ名もcakephpと適当に付けておきます。Vagrantfileがあるところに置いておきます。

//hogeディレクトリに用意しています。
.
├── .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」でアクセスができる状態。

アクセスすると大量のエラー。

localhost
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の中に入って、以下。

/etc/php.ini
[Date]
date.timezone = Asia/Tokyo

上のようにすれば終わり。

app/tmpの権限を変更する

そもそも、Fatalエラー出てるやん。これ治さないと。

app/tmpの権限を777にしちゃえば良いらしい。

sudo chmod -R 777 app/tmp

エラーは消えたけど、違う警告出る。

localhost
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」にアクセスするとこんな感じ。

スクリーンショット 2014-12-07 23.39.45.png

原因は、URL rewriting らしいので、治す。

vagrant内に入って、以下。

/etc/httpd/conf/httpd.conf
# この行がコメントアウトしてないようにする。
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」だけにしたい。

http://book.cakephp.org/2.0/ja/deployment.html

ルートは「app/webroot」にすべき!

今のところ
/var/www/html/cakephp/app
と階層構造はなっていて。僕がしたんですけど。

そして、httpdのDocumentRootの設定は、
"/var/www/html/"となっているので、
「localhost:4567/cakephp」とアクセスしないといけない。

けど、これはダサいので、
localhost:4567でおkとしたい。
そのために

httpd.cnf
DocumentRoot "/var/www/html/cakephp/app/webroot"

と変更しておきました。

無事、「localhost:4567」だけでアクセスができるようになりました。

ただ、とても分からないのは、

httpd.cnf
<Directory "/var/www/html">
    Options FollowSymLinks
    AllowOverride All
</Directory>

この辺は書き換えなくても良いのか?ということです。
そもそも、よくわかってないんだな。orz。悲しい。

一旦このまま進めてみて、問題あれば、確認しよう。

力つきたので、ここ迄です。ありがとうございました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした