PHP の php.ini の中で環境変数を使う方法まとめ
PHP の設定ファイル php.ini の中で環境変数を使う方法についてかんたんにまとめました。
動作確認時のバージョン
- PHP:
8.0.27 - Docker イメージ:
php:8.0-apache
php.ini の中で環境変数を使う方法
php.ini の中で環境変数を使いたいときは ${NAME} という記法を使えば OK です。
post_max_size = ${PHP_UPLOAD_MAX_FILESIZE}
upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}ルールがいくつかあります:
"の文字列中では使えるが、'の文字列中では使えない- 波括弧付きの
${NAME}は使えるが、波括弧なしの$NAMEは使えない
これらのルールについて以下かんたんに説明します。
右辺でそのまま使用する → OK
upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}
; => 環境変数として展開される右辺の値でそのまま使用するのは OK です。
" (ダブルクォーテーション)の中で使用する → OK
sendmail_path = "/usr/bin/msmtp -t --host=${SMTPD_HOST} --port=${SMTPD_PORT}"
; => 環境変数として展開される右辺を " ~ " で囲ったときも使用できます。
この例では ${SMTPD_HOST} と ${SMTPD_PORT} の部分はそれぞれ環境変数の値に置き換えられます。
' (シングルクォーテーション)の中で使用する → NG
upload_max_filesize = '${PHP_UPLOAD_MAX_FILESIZE}'
; => 環境変数として展開されない!右辺を ' ~ ' で囲ったときは使用できません。
この例ではそのまま ${PHP_UPLOAD_MAX_FILESIZE} という文字列として認識されてしまいます。
{ } (波括弧)をつけずに使用する → NG
upload_max_filesize = $PHP_UPLOAD_MAX_FILESIZE
; => 環境変数として展開されない!変数名は {} で囲わないと環境変数として認識されません。
この例ではそのまま $PHP_UPLOAD_MAX_FILESIZE という文字列として認識されてしまいます。
なお、 ${NAME} という記法は php.ini 内で宣言済みの変数を参照するためにも使えるので、意図しない名前の衝突に注意しなくてはなりません。
It is possible to refer to existing .ini variables from within .ini files. Example:
open_basedir = ${open_basedir} ":/new/dir".