0

私はこの問題に6時間直面しています。

簡単にするために、私が抱えている問題をエミュレートするコードをいくつか作成しました。

たとえば、次のファイル構造があるとします。

  • 道/
    • フォルダA/
    • test_sessionA.php
    • フォルダB/
      • test_sessionB.php

test_sessionB.php:

<?php session_start();
$_SESSION['test'] = 'session';
header('Location: ../test_sessionA.php');

test_sessionA.php:

<?php session_start();
var_dump($_SESSION);
session_destroy();

上記の構造では、test_sessionA.php は空の配列を出力します。しかし、test_sessionA.php を test_sessionB.php と同じフォルダーに移動すると、正しい値が出力されます。

皆さんはこの問題の解決策を見つけましたか? ありがとう。

アップデート:

成功せずに次のことを試しました:

  • session_set_cookie_params(0, '/')セッション開始前に追加
  • 絶対URLでリダイレクトheader('Location: http://domain.org/path/test_sessionA.php')

これらのコードは私のローカルマシンでうまく動作するため、サーバー構成に問題がある可能性があります。PHP のバージョンは 5.3.8 (ローカル) および 5.2.17 (ホスティング) です。

4

1 に答える 1

1

session.cookie_path の設定が間違っている可能性があります。php.ini で変更するかsession_set_cookie_params(0, '/')、セッションを開始する前に を使用して設定を試みることができます。

于 2012-10-02T19:23:44.933 に答える