OPcacheを止めたい場合、いくつかの方法があったのでメモ
php.iniに埋め込む方法
まずは一般的な方法として、php.iniを変更でOKな方法
opcache.enable=0
opcache.enable_cli=0
opcache.enable_cliはPHP 7.1.2 以降デフォルトで有効になっているようです。
【メリット】
簡単。
【デメリット】
全PHPのOPcacheを止める為、部分的に動かしたい!止めたい!っていうのはできない。
PHP内に埋め込む方法
php.iniの編集ができないなどの場合は、PHPに直接記載することでも対応可能です。
<?php
ini_set('opcache.enable', 0);
ini_set('opcache.enable_cli', 0);
?>
【メリット】
php.iniの編集権限を持っていない場合に使える。
PHP単位で設定ができる。
【デメリット】
使いたいPHP全てに記述しなければならず、PHPファイルが多いと作業が大変になる。
.htaccessに埋め込む方法
.htaccessが使えるならばこの方法も使える。
php_flag opcache.enable Off
【メリット】
個別にOPcache使う+Apacheを使用している場合だとこの方法が使いやすい。
【デメリット】
CLIでは動作しない。
Nginx等PHP-FPM(FastCGI)では使えない。
.user.iniに埋め込む方法
PHP-FPMだと.htaccessが使えないので、代わりに.user.iniを使えば動作するみたい。
.user.iniは.htaccessと違い、php.iniと同じ方法で設定するみたいです。
こちらも.htaccessと同様PHP-FPMのみなので設定も通常のみ
opcache.enable=0
【メリット】
個別にOPcache使う+nginx(PHP-FPM)を使用している場合だとこの方法が使いやすい。
【デメリット】
CLIでは動作しない。
Apacheでは動作しない。(fastcgi等PHP-FPMを使用している場合を除く)
php.iniにblacklist_filenameを設定する
php.iniにopcache.blacklist_filenameを設定することで該当するファイル・フォルダはOPcacheを使用しないように設定できるようです。
まず、OPcacheを使わないリストを作成します。
/var/www/aaa/broken.php
/var/www/bbb/x
/var/www/ccc/*-broken.php
ワイルドカード使用可能ですが、フルパスの前方一致というのに注意です。
php.iniに先ほど設定したリストを追加します。
opcache.blacklist_filename=/etc/php.d/disable_opcache.ini
【メリット】
個別に設定が簡単にできる。
CLIにも使える
htaccessや.user.iniにも使用できる。
【デメリット】
php.iniの編集権限がない場合使えない。