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