かえでBlog

色々なことを徒然と……

【PHP】OPcacheを無効にする方法

      2017/05/09

OPcacheを止めたい場合、いくつかの方法があったのでメモ

1.php.iniに埋め込む方法

まずは一般的な方法として、php.iniを変更でOKな方法

opcache.enable=0
opcache.enable_cli=0

opcache.enable_cliはPHP 7.1.2 以降デフォルトで有効になっているようです。

 

メリット

簡単。

 

デメリット

全PHPのOPcacheを止める為、部分的に動かしたい!止めたい!っていうのはできない。

 

2.PHP内に埋め込む方法

php.iniの編集権限を持っていない場合、次に思い浮かびそうな案ですね。

ini_set('opcache.enable', 0);
ini_set('opcache.enable_cli', 0);

 

メリット

php.iniの編集権限を持っていない場合に使える。PHP単位で設定ができる。

 

デメリット

使いたいPHP全てに記述しなければならず。数が多いと作業が大変。

 

3..htaccessに埋め込む方法

.htaccessが使えるならばこの方法も使える。

php_flag opcache.enable Off

CLIだと.htaccessは使えないので設定も通常のみ。

 

メリット

個別にOPcache使う+Apacheを使用している場合だとこの方法が使いやすい。

 

デメリット

CLIでは動作しない。
Nginx等PHP-FPM(FastCGI)では使えない。

 

4..user.iniに埋め込む方法

PHP-FPMだと.htaccessが使えないので、代わりに.user.iniを使えば動作するみたい。

opcache.enable=0

.user.iniは.htaccessと違い、php.iniと同じ方法で設定するみたいです。

こちらも.htaccessと同様PHP-FPMのみなので設定も通常のみ

 

メリット

個別にOPcache使う+nginx(PHP-FPM)を使用している場合だとこの方法が使いやすい。

 

デメリット

CLIでは動作しない。
Apacheでは動作しない。(fastcgi等PHP-FPMを使用している場合を除く)

 

5.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

フルパスの前方一致というのに注意です。
また、ワイルドカードも使用可能です。

opcache.blacklist_filename=/etc/php.d/disable_opcache.ini

disable_opcache.ini作成後、php.iniに設定します。

 

メリット

個別に設定が簡単にできる。
CLIにも使える
.htaccessや.user.iniにも使用できる。

 

デメリット

php.iniの編集権限がない場合使えない。

 

参考

PHP:OPcache実行時設定

 - PHP , ,