Every setting is one environment variable
There are no config files. Every setting is an environment variable, and every variable has a default that holds up in production. Deploy an empty environment, then override only the variables you actually care about.
Anything outside this set — typos like "ture" — fails fast at startup, naming the variable. Empty equals unset: FOO=${FOO} substitutions that produce FOO= fall back to the default instead of refusing to start.
サーバーとワーカー
12 変数メインの HTTP サーバーのアドレスとポート。
ファイルおよび PHP スクリプトを配信するルートディレクトリ。
唯一の正規エントリースクリプト。未設定 = 直接的なファイルマッピング、*.php = フロントコントローラー、非 .php = SPA フォールバック。ワーカーモードでは — ワーカーのブートストラップ。DOCUMENT_ROOT を基準に解決されます。
永続的なワーカーモードを有効にします。ENTRY_FILE が .php スクリプトを指している必要があります。
同時 TCP 接続の最大数。
非同期 I/O スレッド。1 = シングルスレッド、N = 固定数、未設定 = 自動。
PHP エグゼキューターのバックエンド。sapi は実際の PHP、stub は PHP なしのベンチマーク用。
ワーカープールのサイズ。N = 固定プール、MIN:MAX = 動的スケーリング、0 = 自動。
動的ワーカーが破棄されるまでアイドル状態を維持する秒数。
PHP キューで保留可能なリクエストの最大数。満杯のときは 529 を返します。MIN:MAX プールでは、初期ワーカー数 = 最小値。
リサイクルされるまでのワーカーごとのメモリ上限 (MiB)。0 = 無制限。Worker::scheduleExit() によるオンデマンドのリサイクル。
各スクリプトの前に $_GET、$_POST、$_COOKIE、$_FILES、$_SERVER および php://input を設定します。falsy = オブジェクト API のみ (oxphp_http_request())。
トラフィックと配信
15 変数接続後に HTTP ヘッダーを受信するまでの最大秒数 (Slowloris 対策)。
グレースフルシャットダウン中に処理中の接続を待機する最大秒数。
ウィンドウあたり IP ごとの最大リクエスト数。0 = 無効。PHP キューが満杯のときは 529 を返します。
レート制限のウィンドウの長さ (秒)。
PEM 証明書へのパス。TLS を有効にするには TLS_CERT と TLS_KEY の両方を設定する必要があります。
PEM 秘密鍵へのパス。
最小 TLS バージョン。1.2 または 1.3。TLS が無効な場合でも起動時に検証されます。
接続あたり同時にオープンできるストリームの最大数。
接続が閉じられるまでにキューできる RST_STREAM フレームの最大数 (Rapid Reset 対策)。
リクエストあたりのデコード後ヘッダーの合計バイト数の上限。
PING フレームの間隔 (秒)。0 で無効。
接続を閉じる前に PING の応答を待機する秒数。
静的ファイルに対する Cache-Control: max-age。30s、5m、2h、30d、1w、1y、単なる秒数、または off を受け付けます。STATIC_CACHE_TTL を置き換えます。
インメモリキャッシュに対する mtime の再検証 — ファイルごとに最大でも 3 秒に一度チェックされます。STATIC_CACHE を置き換えます。
Brotli の品質 0〜11。0 で圧縮を無効にします。
セキュリティ
5 変数クリックジャッキング対策。DENY、SAMEORIGIN、または off。X-Frame-Options + CSP frame-ancestors を設定します。アプリケーションが設定したヘッダーが常に優先されます。
信頼済みプロキシの CIDR (または private)。Forwarded / X-Forwarded-* から、最も右側の非信頼エントリを用いて実クライアント IP を取得します。
直接 URI では .php ファイルを一切実行しない glob パターン (/uploads/**)。ディスク I/O の前にマッチするため、存在の有無を漏らしません。
拒否にマッチしたときのレスポンス。HTTP ステータス 400〜599、または DOCUMENT_ROOT 内の / で始まる PHP フォールバックスクリプト。
シンボリックリンクが DOCUMENT_ROOT の外へ抜け出すことを許可する絶対パス。未設定 = 抜け出しを許可しません。
ログ、トレース、プロファイル
34 変数ログの詳細度。trace、debug、info、warn、error。
リクエストごとのアクセスログ。all = すべてのリクエスト、error = 4xx/5xx のみ、未設定 = 無効。
内部サーバー (/health、/metrics、/config)。ポートのみの値は 127.0.0.1 にバインドします。未設定 = 起動しません。
内部サーバー向けの CIDR 許可リスト。外部からのアクセスは 403 を返し、ヘルスプローブは到達可能なままです。ループバックは暗黙的には含まれません。
カスタムの {status}.html エラーページを置くディレクトリ。
内部クエリエンドポイントのボディの最大バイト数 (512 KiB)。
W3C Trace Context の伝播。traceparent/tracestate を読み取り、$_SERVER 経由で PHP に転送します。
OpenTelemetry のスパンエクスポートを有効にします。TRACE_CONTEXT=true を暗黙的に含みます。
エクスポートプロトコル。grpc または http/protobuf。
OTLP コレクターのエンドポイント。
エクスポートのタイムアウト (ミリ秒)。
認証ヘッダー。key=value,key2=value2。
エクスポートされるスパンでのサービス名。
サービスバージョンの属性。
追加のリソース属性。env=prod,region=us-east-1。
サンプリング戦略。always_on、always_off、traceidratio、および parentbased_* の各バリアント。
比率ベースのサンプラー向けのサンプリング比率 0.0〜1.0。範囲外の値はクランプされます。
APM。33 個の PHP 関数 (PDO、mysqli、cURL、Redis…) の自動計装、エラー捕捉、トレーシング SDK。OTEL_ENABLED が必要です。
スロークエリのしきい値 (ミリ秒)。これより遅い DB クエリには oxphp.db.slow=true が付与されます。
db.params スパンにバインドパラメータを記録します。パラメータが機微な情報を含む可能性がある場合は無効にしてください。
マスタースイッチ。他の PROFILER_* 変数も引き続き解析されるため、タイプミスは起動時に表面化します。
リクエストがサンプリングされる確率 0.0〜1.0。
内部サーバーへのリクエストもサンプリングします。
oxphp_profiler_*() によるオンデマンドプロファイリングに必要な Bearer トークン。
リクエストあたりのスパン数の上限。これを超える長さのプロファイルは切り詰められます。
サンプルあたりのコールスタックの最大深さ (ハード上限 65535)。
ディスク上のプロファイルを置くディレクトリ。
ディスクに書き出す形式。xhprof、speedscope、pprof、flamegraph。
1 秒あたりに書き込むプロファイルファイル数のレート制限。
保持するプロファイルファイルの最大数。古いものは削除されます。
プロファイルを POST するリモートエンドポイント。
エクスポートのワイヤーフォーマット。
各エクスポートとともに送信する Bearer トークン。
XHGui 互換のラッピング。未設定 = URL から自動検出します。
非同期と共有状態
19 変数専用の非同期ワーカースレッド。0 = 関数は登録されますが、呼び出すと AsyncException をスローします。
非同期キューで保留可能なタスクの最大数。0 = 自動。
ワーカーごとの同時タスクファイバー数の上限。全体の処理中上限 = fibers × workers。
OxPHP\Shared\* サブシステム全体のマスタースイッチ。
すべての Shared エントリに対する全体上限。これを超える挿入は CapacityException をスローします。
全エントリにわたる推定メモリの全体上限。
上限のこの割合を超えると、優先度の最も低い処理から切り捨てを開始します。
oxphp_shared_* の Prometheus エクスポジションを切り替えます。
/__ox_shared/* イントロスペクション API を切り替えます。
イントロスペクションレスポンスでの値のプレビュー。プレビューがデータを漏らす可能性がある場合は無効にしてください。
循環チェックの BFS 深さ。深いグラフの場合は上げてください。
循環チェック中にたどるエッジ数。密なグラフの場合は上げてください。
値ごとのサイズ上限。これより大きい挿入は即座に失敗します。
チャネルごとのペイロード合計の上限。
Mutex/Once クロージャ内での panic は、ベストエフォートの復旧ではなく、そのプリミティブを恒久的に poison 状態にします。
ロック競合の診断。off、count、または trace。
ロック診断サンプラーのポーリング間隔。
/entry プレビューにおける文字列ごとの切り詰め。
/entry プレビューでサンプリングされるエントリ数。
Example configurations
Starting points straight from the docs — copy one and adjust.
With the internal server running, /config returns the resolved configuration as JSON. TLS paths, INTERNAL_ADDR and ERROR_PAGES_DIR are scrubbed from the response.
Zero configuration is a valid configuration
Every default above is chosen so an empty environment just works.