search
LoginSignup
11

More than 5 years have passed since last update.

posted at

updated at

Organization

HerokuでPHPとApacheのバージョンを隠す方法

HerokuでPHPを動かすと、HTTPヘッダーにPHPのバージョンとApacheのバージョン(nginxを使っている場合はnginxのバージョン)が丸見えになる。Herokuで動かしていることがばれればバージョンは明らかなのだけれど、念のため隠しておきたいな、という場合にどうぞ。

Procfileの指定

Procfile
web: sh web_boot.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 OffServerTokens ProdをApacheの設定ファイルに書き加えて、expose_php = Offphp.iniの設定を変更しているだけ。その後いつも通りにApacheの起動スクリプトを実行している(この場合publicが公開ディレクトリーになる)。

ちなみにPHPの場合、.user.iniなどを利用して一部設定の上書きを行えるのだが、expose_phpの設定は上書きできない。また、ApacheのServerTokensなども.htaccessの利用では上書きできないのでこのような対処が必要になった。

補足

この方法はあくまでheroku-buildpack-phpの構成ありきのものなので、buildbackの構成が変わったら使えなくなるので注意。そもそもHeroku側でHTTPヘッダーからは隠しておいてほしかったりする…。

一般的なHerokuとPHPの組み合わせの使い方はHerokuでPHPを使うときに気を付けるところに書いたのでよろしければどうぞ。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
11