php.ini の設定により動作が変化します。
どこで設定を行うのか を参照してください。
以下に設定ディレクティブに関する 簡単な説明を示します。
opcache.enable
bool
opcache.enable の設定を、実行時に
ini_set() で有効化することはできません。
実行時にできるのは、無効化だけです。スクリプト内で有効化しようとすると、警告が発生します。
opcache.enable_cli
bool
opcache.memory_consumption
int
"8" です。これより小さい値を設定しても、最小値が強制されます。
opcache.interned_strings_buffer
int
注意: PHP 8.4.0 より前のバージョンの最大値は、 すべてのアーキテクチャで 4095 MB でした。
opcache.max_accelerated_files
int
{ 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 } のうち、
設定値以上の最初の数値です。
最小値は 200 です。最大値は 1000000 です。
これらの範囲外の値が設定されても、範囲内の値に設定し直されます。
opcache.max_wasted_percentage
int
"50" です。これ以上の値が設定されても、最大値が強制されます。
opcache.use_cwd
bool
opcache.validate_timestamps
bool
有効にすると、OPcache は、スクリプトが更新されたかを opcache.revalidate_freq 秒ごとにチェックします。 このディレクティブが無効な場合、ファイルシステムへの変更を反映するには、 opcache_reset() または opcache_invalidate() 関数を介して、 または Web サーバーを再起動して手動で OPcache をリセットしなければいけません。
注意: opcache.file_update_protection や opcache.max_file_size の値に0でない値が設定されている場合、OPcache はファイルのタイムスタンプをまだコンパイル時にチェックする可能性があります。
opcache.revalidate_freq
int
0 にすると、OPcache は、リクエストごとに更新をチェックします。
この設定ディレクティブは、
opcache.validate_timestamps が無効の場合、
無視されます。
opcache.revalidate_path
bool
opcache.save_comments
bool
opcache.fast_shutdown
bool
opcache.enable_file_override
bool
opcache.optimization_level
int
opcache.inherited_hack
bool
opcache.dups_fix
bool
opcache.blacklist_filename
string
; 特定のファイルに一致します。 /var/www/broken.php ; x で始まるすべてのファイルに一致するプレフィックス /var/www/x ; ワイルドカード一致です。 /var/www/*-broken.php
opcache.max_file_size
int
0 の場合、すべてのファイルがキャッシュされます。
opcache.consistency_checks
int
注意: PHP 8.1.18 と 8.2.5 で無効になり、PHP 8.3.0 で削除されました。
opcache.force_restart_timeout
int
opcache.error_log
string
stderr と同様に扱われ、
結果として標準エラー(ほとんどの場合、Web サーバーのエラーログです)に送られるログになります。
opcache.log_verbosity_level
int
opcache.record_warnings
bool
opcache.preferred_memory_model
string
mmap、shm、
posix および win32 があります。
opcache.protect_memory
bool
opcache.mmap_base
string
opcache.restrict_api
string
"" で、これは、何も制限しないことを意味します。
opcache.file_update_protection
string
opcache.huge_code_pages
bool
opcache.lockfile_path
string
opcache.opt_debug_level
string
opcache.file_cache
string
"" で、これはファイルベースのキャッシュを無効にします。
opcache.file_cache_only
bool
注意: PHP 8.1.0 より前のバージョンでは、 既に収集されているファイルキャッシュに対してこのディレクティブを無効にするには、 手動でファイルキャッシュをクリアする必要があります。
opcache.file_cache_consistency_checks
bool
opcache.file_cache_fallback
bool
opcache.file_cache_only=1 であるものとみなします (Windows のみ)。
ファイルキャッシュを明示的に有効にする必要があります。
この構成オプションを無効にすると、プロセスの開始が妨げられる可能性があります。 そのため推奨しません。
opcache.validate_permission
bool
opcache.validate_root
bool
opcache.preload
string
注意: コードの事前ロードは、Windows ではサポートされていません。
opcache.preload_user
string
root
を指定した場合は許可されます。
PHP 8.3.0 以降では、CLI SAPI や phpdbg SAPI から root で実行した場合、
root ユーザでの事前ロードを許可するために、このディレクティブを指定する必要はありません。
opcache.cache_id
string
Windows では、同じユーザーアカウントで同じ PHP SAPI を実行し、 かつ同じ cache ID を持つ全てのプロセスが同一の OPcache インスタンスを共有します。 cache ID の値は自由に選べます。
IIS の場合、異なるアプリケーションプールは
環境変数 APP_POOL_ID を
opcache.cache_id
の値として使うことで、
それぞれが異なる OPcache インスタンスを持つことが出来ます。
opcache.jit
string|int
disable: 完全に無効にする。実行時にも有効にできません。off: 無効にしますが、実行時に有効にできます。tracing/on: トレーシングJIT を使う。
デフォルトはこの値です。ほとんどのユーザに推奨される値です。
function: 関数単位でJITを使う。
高度な使い方として、このオプションには4桁の整数値 CRTO を指定できます。
それぞれの桁の意味は下記のとおりです。
C (特定のCPU向けの最適化フラグ)0: 特定のCPU向けの最適化を無効にする1: CPU がサポートしている場合に、AVX の使用を有効にする。R (レジスタの割り付け)0: レジスタ割り付けを行わない1: ブロックについて、ローカルレジスタ割り付けを行う2: グローバルレジスタ割り付けを行うT (JITを行うトリガ)0: スクリプトの読み込み時に全ての関数をコンパイルする1: 最初の実行時に関数をコンパイルする2: 最初のリクエスト時に関数の実行をプロファイリングし、
ホットな関数を後でコンパイルします。
3: その場でプロファイリングを行い、ホットな関数をコンパイルします4: 現在は使われていません。5: トレーシングJITを使う。
その場でプロファイリングを行い、ホットコードの断片のトレースをコンパイルします。
O (最適化レベル)0: JIT を使わない1: 最小限しかJITを使わない (通常のVMハンドラを呼び出す)2: VMハンドラをインライン化する3: 型推論を使う4: コールグラフを使う5: スクリプト全体を最適化する"tracing" モードは、CRTO = 1254 に対応しています。
"function" モードは、CRTO = 1205 に対応しています。
opcache.jit_buffer_size
int
opcache.jit_debug
int
ZEND_JIT_DEBUG から始まるマクロ定義を検索してください)。
opcache.jit_bisect_limit
int
opcache.jit=1215 の場合です。opcache.jit も参照ください。
opcache.jit_prof_threshold
float
opcache.jit_max_root_traces
int
opcache.jit_max_side_traces
int
opcache.jit_max_exit_counters
int
opcache.jit_hot_loop
int
[0,255] です。
範囲外の値 (例: -1 や 256) を設定すると、
デフォルトの値が使われます。特に 0 を設定すると、
JIT はどのイテレーションにおいてもコンパイルとトレースをしなくなります。
opcache.jit_hot_func
int
[0,255] です。
範囲外の値 (例: -1 や 256) を設定すると、
デフォルトの値が使われます。特に 0 を設定すると、
JIT はどの関数呼び出しにおいてもコンパイルとトレースをしなくなります。
opcache.jit_hot_return
int
[0,255] です。
範囲外の値 (例: -1 や 256) を設定すると、
デフォルトの値が使われます。特に 0 を設定すると、
JIT はどのリターンにおいてもコンパイルとトレースをしなくなります。
opcache.jit_hot_side_exit
int
[0,255] です。
範囲外の値 -1 や 256) を設定すると、
デフォルトの値が使われます。特に 0 を設定すると、
JIT はどのサイドトレースから抜けてもコンパイルとトレースをしなくなります。
opcache.jit_blacklist_root_trace
int
opcache.jit_blacklist_side_trace
int
opcache.jit_max_loop_unrolls
int
opcache.jit_max_recursive_calls
int
opcache.jit_max_recursive_returns
int
opcache.jit_max_polymorphic_calls
int