CakePHP
Apache
vagrant

【CakePHP】CSSが反映されない場合の対処法まとめ

概要

CakePHPでビューを作っている時に、CSSが反映されなくなった場合の対策法まとめです。ちなみに筆者は下記の対策を全部しましたが、結局反映できず嫌になってしばらく放置して戻ってきたら直ってました。何が原因だったのはわからないのでやったこと全部リストにしましたので参考にしてください。

原因

ブラウザにキャッシュが残っているから

対策

①ブラウザのキャッシュを削除する

アプリを確認するのに使うブラウザのキャッシュを削除します。Chromeでは履歴削除でキャッシュが消せます。

②app/Config/core.phpの編集

下記、コメントアウトされているはずなのでコメントアウトを外します。

Configure::write('debug', 2);
Configure::write('Asset.timestamp', true);

//debug = 0 の時
Configure::write('Asset.timestamp', 'force');

③Apacheの設定を変える

cd /etc/httpd/conf
sudo vi httpd.conf

でファイルを開き、

EnableMMAP off        //これでも解決しなかったらさらに
EnableSendfile off

というのがコメントアウトされてるので有効にしましょう。また、

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

該当箇所が上記のようになっていなければ直しましょう。

sudo service httpd reload

で再起動してくださいね。

④アプリに蓄積されるキャッシュを消す

/app/tmp/cache/以下のディレクトリ(modelsとかviewとか)にキャッシュが入っているので、全て削除してしまいましょう。

⑤コントローラーのbeforeFilterを編集

コントローラの中に、

public function beforeFilter()
{
     parent::beforeFilter();
     $this->response->disableCache();
}

と追加しましょう。

最後に

一回サーバーをシャットダウンして、また立ち上げてみるのもありだと思います。
これだけ対策があるのでハマっている方は試してみてください。