Capistrano3 を利用して、PHPのコンテンツを更新していたのだが、どうもPHPファイルだけ更新が反映されない。php-fpm を reload してみたら更新された。これは、どういうことやねんということで調べる。
ファイルを直接上書きすると、更新される。Capistrano では symlink により current ディレクトリが切り替わる仕組みとなっているため(capistrano deploy のデフォルトの挙動) この動きが何か怪しそうだ。
犯人はOpCache と Nginx の設定
もともとの fastcgi_param
の設定は以下になっていた
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
どうやら、opcache は symlink にあるブツの変更を反映しない(?)
設定をいかにすることで解消可能
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;