HerokuでPHPを動かすと、HTTPヘッダーにPHPのバージョンとApacheのバージョン(nginxを使っている場合はnginxのバージョン)が丸見えになる。Herokuで動かしていることがばれればバージョンは明らかなのだけれど、念のため隠しておきたいな、という場合にどうぞ。
Procfileの指定
web: sh web_boot.sh
スクリプトを起動するように書き換え。
web_boot.shの指定
# Apache configuration
echo "ServerSignature Off" >> /app/vendor/heroku/heroku-buildpack-php/conf/apache2/heroku.conf
echo "ServerTokens Prod" >> /app/vendor/heroku/heroku-buildpack-php/conf/apache2/heroku.conf
# PHP configuration
sed -i 's/^expose_php = On/expose_php = Off/' /app/vendor/heroku/heroku-buildpack-php/conf/php/php.ini
# Launch Apache with PHP
vendor/bin/heroku-php-apache2 public
やっていることは単純で、ServerSignature Off
とServerTokens Prod
をApacheの設定ファイルに書き加えて、expose_php = Off
にphp.ini
の設定を変更しているだけ。その後いつも通りにApacheの起動スクリプトを実行している(この場合public
が公開ディレクトリーになる)。
ちなみにPHPの場合、.user.ini
などを利用して一部設定の上書きを行えるのだが、expose_php
の設定は上書きできない。また、ApacheのServerTokens
なども.htaccess
の利用では上書きできないのでこのような対処が必要になった。
補足
この方法はあくまでheroku-buildpack-phpの構成ありきのものなので、buildbackの構成が変わったら使えなくなるので注意。そもそもHeroku側でHTTPヘッダーからは隠しておいてほしかったりする…。
一般的なHerokuとPHPの組み合わせの使い方はHerokuでPHPを使うときに気を付けるところに書いたのでよろしければどうぞ。