3

$_SERVER['HTTPS']実際に https 経由でページにアクセスしているときに空になるという問題があります。

のドキュメントに$_SERVERよると、HTTPS 経由でページにアクセスする場合、これは空ではないはずです。

mod_sslのドキュメントに従う

このモジュールは、多くの SSL 情報を追加の環境変数として SSI および CGI 名前空間に提供します。

これは、明示的にする必要があることを意味しますか

SetEnv HTTPS on

PHPがmod_phpとして実行されている場合、Apacheで$_SERVER['HTTPS']設定しますか?

システムに何か問題があるのか​​、それとも正常な動作をしているのかを把握しようとしています。

4

3 に答える 3

4

.htaccess でSetEnvを適切に使用するには、次のようなmod_envモジュールが必要です。

<IfModule mod_env.c>
   SetEnv HTTPS on
</IfModule>

それ以外の場合、$_SERVER["HTTPS"]は空になります。

于 2012-06-08T15:25:26.773 に答える
1

SetEnvPHPモジュールでは機能しないと思います。ひょっとして使っていますmod_userdirか?これは影響を与える可能性があります。

または、この種の検出を使用できます。

if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'
    || $_SERVER['SERVER_PORT'] == 443) {

    $secure_connection = true;
}

ところで、これは、サイトが負荷分散されていて、バランサーが通常の HTTP 接続で内部的に実行されている場合にも発生する可能性があります。

アップデート

mod_userdir使用していなくても、常にこの効果があるかどうかはわかりません。

例については、値を割り当てる代わりに$secure_connection(誰も見ていないことを確認してください)$_SERVER['HTTPS']それ自体に書き込むことができます:)

于 2012-06-08T15:07:20.060 に答える
0

Apache 2.x または 1.x を使用していますか? $_SERVER の PHP ドキュメントで、Apache 1 では設定されないというコメントを見つけました。

于 2012-06-08T15:08:58.107 に答える