PHPソースの変更が反映されないときはOPcacheを疑え

More than 5 years have passed since last update.

MAMP環境でphpソースを編集していて、何度ブラウザを更新しても古いソースを反映してしまい困ったことがありました。

この現象にブラウザやサーバのキャッシュは関与していないことが分かり、色々調べているとこんなものが。


php.ini

[OPcache]

;zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

OPcacheという拡張モジュールが作用していることが分かりました。どうもこのOPcache、PHP 5.5.0から導入されたものらしいです。

適宜設定すればいいのでしょうが、私は全てコメントアウトしました。

(131218追記)ただコメントアウトするのも投げやりなので確かめてみましたが、MAMPが用意しているopcache.revalidate_freqの数値が60と大きすぎるのが根本的な原因のようなので、本来のデフォルト値の2秒などに設定するという手もあるでしょう。