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"
.