CentOS 6で秘密情報をrootだけが読めるファイルに設定する
Webアプリで秘密情報などを環境変数から取得するようにすることがあります。
Apacheの設定ファイルで環境変数を定義すると、CLIからPHPスクリプトを実行した場合に再度別に環境変数を定義しないといけません。1か所で定義する方法を考えました。
まず、/etc/sysconfig/httpd
に環境変数を追加します。
/etc/sysconfig/httpd
export ENV=production
このファイルはrootだけが読めるようにパーミッションを設定しておきます。
$ sudo chmod go-rwx /etc/sysconfig/httpd
次に、Apacheの設定でPHPに渡したい環境変数をPassEnv
に指定します。
PassEnv ENV
これで、Web経由で実行されるPHPスクリプトでは$_SERVER['ENV']
に値が渡されます。
CLIから実行する場合は、以下のようなshell script経由で実行します。
php.sh
#!/bin/sh
. /etc/sysconfig/httpd
su -s /bin/bash apache -c "php $*"
これで以下のように実行できます。
$ sudo ./php.sh index.php
Date: 2016/03/04