phpmyadminをSSLアクセラレータ環境下で使用する

apacheで↓の設定をしている場合に困った。httpsのページでphpmyadminにログインするとhttpに飛んだ。しかもport:443の。

https://www.sample.com/phpmyadmin/

にアクセスしてログインすると、

http://www.sample.com:443/phpmyadmin/

がLocationで返ってきてブラウザからアクセスできなかった。phppgadminは大丈夫だったんだけどなぁ。phpの作りの違いか。

解決?

phpmyadminphp環境変数を見て、HTTPかHTTPSかを判別してLocationで返すURLを作成しているのか?phpわかんねー。とりあえずindex.phpconfig.inc.phpの先頭に、

$_SERVER['HTTPS'] = "on";

を足して、強制的にHTTPSのページと判断させるというbkで解決した。

追記

これはphpmyadminをいじるのではなくて、apachehttps用のvirtualhost に

Setenv HTTPS on

と設定してあげるほうが良さそうだな。他のphpアプリからも環境変数でhttp/httpsを判別できるようになるし。

さらに追記

ちょっと環境が違うけど。https用のvirtualhostをnginxで8443番portでlistenさせていて、nginx+fastcgi+php の場合、https://example.com:8443/ にredirectされて困った。環境変数 HTTPS をonにしてもダメだったので、さらにSERVER_PORTまでいじったらいけた。

$_SERVER['HTTPS'] = "on";
$_SERVER['SERVER_PORT'] = 443;

かなり無理やりですね。