PHP

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

2017年5月6日

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の編集権限がない場合使えない。

参考

-PHP
-, ,