## 実行時設定

php.ini の設定により動作が変化します。

OPcache 設定オプション
名前 | デフォルト | 変更可能 | 変更履歴
--- | --- | --- | ---
opcache.enable | "1" | PHP_INI_ALL |
opcache.enable_cli | "0" | PHP_INI_SYSTEM |
opcache.memory_consumption | "64" | PHP_INI_SYSTEM |
opcache.interned_strings_buffer | "4" | PHP_INI_SYSTEM |
opcache.max_accelerated_files | "2000" | PHP_INI_SYSTEM |
opcache.max_wasted_percentage | "5" | PHP_INI_SYSTEM |
opcache.use_cwd | "1" | PHP_INI_SYSTEM |
opcache.validate_timestamps | "1" | PHP_INI_ALL |
opcache.revalidate_freq | "2" | PHP_INI_ALL |
opcache.revalidate_path | "0" | PHP_INI_ALL |
opcache.save_comments | "1" | PHP_INI_SYSTEM |
opcache.load_comments | "1" | PHP_INI_ALL | PHP 7.0.0 で削除されました
opcache.fast_shutdown | "0" | PHP_INI_SYSTEM | PHP 7.2.0 で削除されました
opcache.enable_file_override | "0" | PHP_INI_SYSTEM |
opcache.optimization_level | "0x7FFFBFFF" | PHP_INI_SYSTEM | PHP 5.6.18 で 0xFFFFBFFF から変更されました
opcache.inherited_hack | "1" | PHP_INI_SYSTEM |
opcache.dups_fix | "0" | PHP_INI_ALL |
opcache.blacklist_filename | "" | PHP_INI_SYSTEM |
opcache.max_file_size | "0" | PHP_INI_SYSTEM |
opcache.consistency_checks | "0" | PHP_INI_ALL |
opcache.force_restart_timeout | "180" | PHP_INI_SYSTEM |
opcache.error_log | "" | PHP_INI_SYSTEM |
opcache.log_verbosity_level | "1" | PHP_INI_SYSTEM |
opcache.preferred_memory_model | "" | PHP_INI_SYSTEM |
opcache.protect_memory | "0" | PHP_INI_SYSTEM |
opcache.mmap_base | `NULL` | PHP_INI_SYSTEM |
opcache.restrict_api | "" | PHP_INI_SYSTEM |
opcache.file_update_protection | "2" | PHP_INI_ALL |
opcache.huge_code_pages | "0" | PHP_INI_SYSTEM |
opcache.lockfile_path | "/tmp" | PHP_INI_SYSTEM |
opcache.opt_debug_level | "0" | PHP_INI_SYSTEM |
opcache.file_cache | NULL | PHP_INI_SYSTEM | PHP 7.0.0 以降で利用可能
opcache.file_cache_only | "0" | PHP_INI_SYSTEM | PHP 7.0.0 以降で利用可能
opcache.file_cache_consistency_checks | "1" | PHP_INI_SYSTEM | PHP 7.0.0 以降で利用可能
opcache.file_cache_fallback | "1" | PHP_INI_SYSTEM | PHP 7.0.0 以降で利用可能
opcache.validate_permission | "0" | PHP_INI_SYSTEM | PHP 7.0.14 以降で利用可能
opcache.validate_root | "0" | PHP_INI_SYSTEM | PHP 7.0.14 以降で利用可能

PHP_INI_* モードの詳細および定義については どこで設定を行うのか を参照してください。

以下に設定ディレクティブに関する 簡単な説明を示します。

`opcache.enable` boolean

  オペコード・キャッシュを有効にします。 無効にした場合、コードは最適化もキャッシュもされません。 opcache.enable の設定を、実行時に ini_set() で有効化することはできません。 実行時にできるのは、無効化だけです。スクリプト内で有効化しようとすると、警告が発生します。

`opcache.enable_cli` boolean

  PHP の CLI 版に対してオペコード・キャッシュを有効にします。

`opcache.memory_consumption` integer

  OPcache によって使用される共有メモリ・ストレージのサイズ。（ MB 単位）

`opcache.interned_strings_buffer` integer

  インターン (intern) された文字列を格納するために使用されるメモリ量。（ MB 単位） この設定ディレクティブの値は、PHP 5.3.0 未満では無視されます。

`opcache.max_accelerated_files` integer

  OPcache ハッシュテーブルのキー（すなわちスクリプト）の最大数。 使用される現時点の値は、 素数の集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } のうち、 設定値以上の最初の数値です。 最小値は 200 です。最大値は、PHP 5.5.6 より前のバージョンでは 100000、PHP 5.5.6 以降では 1000000 となります。

`opcache.max_wasted_percentage` integer

  再起動がスケジュールされるまでに許される、無駄なメモリの最大の割合。

`opcache.use_cwd` boolean

  有効にすると、OPcache は現行の作業ディレクトリをスクリプト・キーに追加します。 その方法によって、同じ基底名を持つファイル同士で起こりうる衝突を回避します。 このディレクティブを無効にするとパフォーマンスが向上しますが、既存のアプリケーションを破壊するかもしれません。

`opcache.validate_timestamps` boolean

  有効にすると、OPcache は、スクリプトが更新されたか opcache.revalidate_freq 秒ごとにチェックします。 このディレクティブが無効な場合、ファイルシステムへの変更を反映するには、 opcache_reset() または opcache_invalidate() 関数を介して、 または Web サーバを再起動して手動で OPcache をリセットしなければいけません。

`opcache.revalidate_freq` integer

  更新のためにスクリプトのタイムスタンプをチェックする頻度。（秒単位） 0 にすると、OPcache は、リクエストごとに更新をチェックします。

  この設定ディレクティブは、 opcache.validate_timestamps が無効の場合、 無視されます。

`opcache.revalidate_path` boolean

  無効にすると、 同一の include_path を使用する、 キャッシュされた既存のファイルが再利用されます。 したがって、同じ名前を持つファイルが include_path の他の部分にあると、それは見つかりません。

`opcache.save_comments` boolean

  無効にすると、最適化したコードのサイズを減らすために OPcode キャッシュからすべてのドキュメンテーション・コメントが廃棄されます。 この設定ディレクティブを無効にすると、注釈のためにコメント・パースに依存するアプリケーションおよびフレームワークを破壊するかもしれません。 それには、Doctrine、Zend Framework 2 および PHPUnit が含まれます。

`opcache.load_comments` boolean

  無効にすると、たとえ存在していても、ドキュメンテーション・コメントはオペコード・キャッシュから読み込まれません。 これは、それらを必要とするアプリケーションでコメントを読み込むためだけに opcache.save_comments と一緒に使用できます。

`opcache.fast_shutdown` boolean

  有効にすると、それぞれに割り当てられたブロックを解放しない、高速シャットダウン・シーケンスが使用されます。 しかし、リクエスト変数のすべてのセットをひとまとめに割当てを解除することは、Zend Engine のメモリ・マネージャに依存します。

  このディレクティブは、PHP 7.2.0 で削除されました。 A variant of the fast shutdown sequence has been integrated into PHP and will be automatically used if possible.

`opcache.enable_file_override` boolean

  有効にすると、file_exists()、 is_file() および is_readable() が呼ばれた際に、 ファイルが既にキャッシュ済みかどうかをオペコード・キャッシュからチェックします。 これは、PHP スクリプトの存在および読み込み可能かをチェックするアプリケーションのパフォーマンスを改善させるかもしれません。 しかし、opcache.validate_timestamps が無効な場合に、 陳腐化した結果を返す危険があります。

`opcache.optimization_level` integer

  どの最適化パスが実行されるかコントロールするビットマスク。

`opcache.inherited_hack` boolean

  PHP 5.3 未満では、OPcache は DECLARE_CLASS オペコードが継承を使用した場所を保存します。 ファイルが読み込まれる際に、OPcache は現行の環境を使用して継承クラスをバインドしようとします。 DECLARE_CLASS オペコードが現行のスクリプトで不要かもしれない時に問題です。 オペコードが定義されていることをスクリプトが必要とする場合、それは実行できないかもしれません。

  この設定ディレクティブの値は、PHP 5.3 以降では無視されます。

`opcache.dups_fix` boolean

  "Cannot redeclare class" （クラスを再宣言できません）というエラーを回避する目的でのみ、このハックを有効にするべきです。

`opcache.blacklist_filename` string

  OPcache ブラックリスト・ファイルの場所。 ブラックリスト・ファイルは、高速化すべきではないファイルの名前を 1 行につき 1 つ含むテキストファイルです。 ワイルドカードが許されます。そして、プレフィックスも提示できます。 セミコロンで始まる行は、コメントとして無視されます。

  簡単なブラックリスト・ファイルは、以下の通りかもしれません。

      ; 特定のファイルに一致します。
      /var/www/broken.php
      ; x で始まるすべてのファイルに一致するプレフィックス
      /var/www/x
      ; ワイルドカード一致です。
      /var/www/*-broken.php

`opcache.max_file_size` integer

  キャッシュできるファイル・サイズの最大。（バイト単位） これが 0 の場合、すべてのファイルがキャッシュされます。

`opcache.consistency_checks` integer

  ゼロ以外の場合、OPcache は、リクエスト Ｎ 回毎にキャッシュのチェックサムを検証します。 N は、この設定ディレクティブの値です。 パフォーマンスを損なうので、これはデバッグ時のみ有効にすべきです。

`opcache.force_restart_timeout` integer

  キャッシュがアクティブではない場合に、スケジュールされた再起動が始まるのを待つ時間の長さ。（秒単位） タイムアウトに達すると、OPcache は何か具合が悪いとみなして、リスタートできるようにするためにキャッシュのロックを所持する処理を殺します。

  opcache.log_verbosity_level が 2 以上の場合、警告発生時にエラーログに記録されます。

`opcache.error_log` string

  エラーに対するエラーログ。 空の文字列は、stderr と同様に扱われ、 結果として標準エラー（ほとんどの場合、Web サーバーのエラーログです）に送られるログになります。

`opcache.log_verbosity_level` integer

  ログ冗長レベルです。 デフォルトでは、致命的エラー（レベル 0 ）およびエラー（レベル 1 ）だけが記録されます。 利用できる他のレベルは、警告（レベル 2 ）、情報メッセージ（レベル 3 ）およびデバッグ・メッセージ（レベル 4 ）です。

`opcache.preferred_memory_model` string

  OPcache が使用する優先のメモリ・モデル。 空のままにすると、OPcache は最も適切なモデルを選びます。 それは実質的にすべての場合に正しいふるまいです。

  可能な値には、mmap、shm、 posix および win32 があります。

`opcache.protect_memory` boolean

  スクリプト実行中に予期しない書込みから共有メモリを保護する。 これは、内部のデバッギングだけに役立ちます。

`opcache.mmap_base` string

  Windows 上で共有メモリ・セグメントに使用される基底。 すべての PHP 処理は、共有メモリを同じアドレス空間にマップしなければいけません。 このディレクティブを使用すると、"Unable to reattach to base address" （基底アドレスに再アタッチできません） というエラーを修復できます。

`opcache.restrict_api` string

  OPcache API 関数の呼び出しを、指定した文字列から始まるパス上の PHP スクリプトからだけに制限します。 デフォルトは "" で、これは、何も制限しないことを意味します。

`opcache.file_update_protection` string

  Prevents caching files that are less than this number of seconds old. It protects from caching of incompletely updated files. In case all file updates on your site are atomic, you may increase performance by setting it to "0".

`opcache.huge_code_pages` string

  Enables or disables copying of PHP code (text segment) into HUGE PAGES. This should improve performance, but requires appropriate OS configuration.

`opcache.lockfile_path` string

  共用ロックファイルを格納する絶対パス (*nix のみ)

`opcache.opt_debug_level` string

  Produces opcode dumps for debugging different stages of optimizations. 0x10000 will output opcodes as the compiler produced them before any optimization occurs while 0x20000 will output optimized codes.

`opcache.file_cache` string

  ファイルベースのセカンドレベル opcode キャッシュを有効にし、そのディレクトリを設定します。 これは共有メモリ上の opcode キャッシュがいっぱいの時やサーバ再起動時、 もしくは共有メモリ上の opcode キャッシュをリセットした場合のパフォーマンスを向上させます。 デフォルトは "" で、これはファイルベースのキャッシュを無効にします。

`opcache.file_cache_only` boolean

  共有メモリ内でのオペコード・キャッシュを有効あるいは無効にします。

`opcache.file_cache_consistency_checks` boolean

  ファイルキャッシュから読み込んだスクリプトのチェックサムの検証を有効あるいは無効にします。

`opcache.file_cache_fallback` boolean

  共有メモリへの再アタッチに失敗するプロセスについて、 opcache.file_cache_only=1 であるものとみなします (Windows のみ)。 ファイルキャッシュを明示的に有効にする必要があります。

`opcache.validate_permission` boolean

  キャッシュされたファイルのアクセス権限を現在のユーザーに対して検証します。

`opcache.validate_root` boolean

  chroot された環境での名前の衝突を防止します。 これは、chroot 以外でのファイルへのアクセスを防止するために、 chroot されたすべての環境で有効にする必要があります。