私はこの問題に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 (ホスティング) です。