[Tep-j-general] Re: PHP4.3.1上でのSSL 問題

Back to archive index

Mineaki Gotoh gij****@peak*****
2003年 4月 6日 (日) 07:27:12 JST


吾妻さん、こんにちは。

私もあまり時間がなくて、簡単なことしか言えなくてすみません。

>後藤さん、アドバイス有難うございました。
>
>> これで直る可能性は低いと思いますが、上記のような環境で正常に動作させ
>> るために必要なパッチのうちの一つを提示しておきます。
>>
>> */includes/application_top.php
>>   if (function_exists('session_set_cookie_params')) {
>>     session_set_cookie_params(0, substr(DIR_WS_CATALOG, 0, -1));
>>   }
>>     ↑ここをコメントアウト
>
>直る事をかなり期待して、この部分をコメントアウトしたのですが、直りません
>でした。

直るわけはないな、と思いながら書いてました。でも、どうせ必要なパッチ
です。Operaで来たお客様がショップに不信感を持ちますから。(Cookieのパ
ス管理も出来てないのか、と思われたくはないでしょう)


>Session関係の問題かもしれないとの事ですが、NONSSLからSSLの時に、Session
>を維持できるように、SSLに移行する際には、URLにSessionIDが付いてくるんで
>すよね?あと、調べたんですが、NONSSLからSSLに移行する際には、新しい
>SessionIDは、発行されてませんでした。

ここなんですけど、GET変数としてのSessionIDが新しい番号でなかったとし
ても、それを受け取る側の解釈が違っているということはないでしょうかね。
いわゆる「セッションID決めうち」に対するセキュリティ対策とか。

実際に、serializeされたsession情報を調べてみればわかるような気もする
のですが。


>Fatal error: Call to a member function on a non-object in
>/usr/home/web/users/*****/html/includes/application_top.php
>このFatalErrorの原因は、add_current_page()のFunction内でエラーが起こって
>るのでしょうか?それとも、このFunctionを呼べなくてエラーが起こってるので
>しょうか?

素直にエラー文を読めば、
  $navigation->add_current_page();
の、$navigationが、(navigationHistoryクラスの)インスタンスではない
ので、そこからメンバ関数なんて呼べっこないですよ

という意味ですよね。

そのような状態に成り得るのは、下のソースコードを読む限り、

// navigation history
  if (tep_session_is_registered('navigation')) {
    if (!eregi('^4\.', phpversion()) || eregi('^4.0b2', phpversion())) {
      $broken_navigation = $navigation;
      $navigation = new navigationHistory;
      $navigation->unserialize($broken_navigation);
    }
  } else {
    tep_session_register('navigation');
    $navigation = new navigationHistory;
  }
  $navigation->add_current_page();

session変数に navigation が保存されていて、かつ、それが
navigtionHistoryのオブジェクトではない場合のみですね。

とすると、その前の$navigationを保存する側での問題ですね。もっとも、保
存もこの部分だけだと思うので、まずはsession内部のnavigationの値の変遷
を調べてみるべきでしょう。


>本家のSupportForumの方では、PHP4.3.1では、古いスーパーグローバルが
>使われなくなったから、
>$HTTP_SERVER_VARS -> $_SERVER
>$HTTP_ENV_VARS -> $_ENV
>$HTTP_COOKIE_VARS -> $_COOKIE
>$HTTP_GET_VARS -> $_GET
>$HTTP_POST_VARS -> $_POST
>$HTTP_POST_FILES -> $_FILES
>$HTTP_SESSION_VARS -> $_SESSION
>のように変えた方が良いとの記述があったのですが、私の場合、SSL以外の普通
>のCatalogセクションは、正常に動作してるので、上記の事が問題って事は、な
>いですよね?

これは無関係だと思います。徐々に使われなくなる方向にあるかもしれませ
んが、本当に使えなくなるのはかなり先のことだと思います。

あまり役に立たないアドバイスですみません。

-- 
株式会社PEAK  ネットワーク技術担当 後藤 <gij****@peak*****>




Tep-j-general メーリングリストの案内
Back to archive index