やりたいこと
- DB接続先などの変数をapp.phpに直接書かずに、環境変数から読み込みたい
環境
- Amazon linux2
- Apache 2.4
- PHP 7.2
Apache側
systemdユニットファイルで環境変数リストファイルを読み込めるように設定
-
Environment
に直接定義してもいい -
EnvironmentFile
には、環境変数リストファイルをセット
/etc/systemd/system/multi-user.target.wants/httpd.service
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/httpd
環境変数リストファイルをセット
-
/etc/sysconfig/httpd
に書くのが公式のよう - たぶんどのファイルでもいい
- exportはいらない
DB_HOST=testdb
httpd.confへ設定
-
PassEnv
はApacheを起動するユーザーの環境変数を引き継ぐことができる -
SetEnv
はhttpd.confに直接値を書く必要があるので、起動のたびに変わる変数などの利用には向いていない
/etc/httpd/conf/httpd.conf
</VirtualHost>
PassEnv DB_HOST
</VirtualHost>
php側
config/app.php
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'host' => $_SERVER["DB_HOST"],