0

新しいページをロードするたびにセッション変数がリセットされます。

次のように、関数を一番上にheader.php配置して各スクリプトにファイルを含めました。session_start()

session_start();
error_reporting(E_ERROR);

session_idまた、すべてのページで同じであることを確認しました。

Web ホストの php_ini 設定ファイルを確認したところ、session.save_pathが に設定されていることがわかりました/tmp/var/lib/session/このサイトで誰かが提案したように変更したところ、コードに奇妙な警告が表示されるようになりました。

警告: session_start() [function.session-start]: open(/var/lib/php/session//sess_97fca6d21c7ffa8333cd42eaa87f2eac, O_RDWR) が失敗しました: /home/mforsyth/public_html/Beesting/header.php で許可が拒否されました ( 13 ) 2行目

この問題を解決するために何をすべきかわかりません。どんな助けでも役に立ちます。詳細が必要な場合はお知らせください。

編集:フォルダーを/ tmpに戻し、読み書きできることを確認しました。また、すべてのページでセッション ID をエコーし​​ましたが、結果はすべて同じです。また、セッションは1ページしか続かないようです

4

4 に答える 4

2

何が起こるかというと、php は、ThinkingMonkey が言及したディレクトリに書き込むいくつかの情報を使用して、セッションを追跡しようとします。

php/webserver プロセスのユーザーがディレクトリに書き込めないため、これは失敗します。したがって、セッションを取得できません。

プロセスが実行されているユーザーを見つけて、そのディレクトリの読み取り/書き込み権限を付与します。

于 2012-07-19T21:56:24.187 に答える
1

助けてくれてありがとう。この問題についてさらに調査し、ホストと話し合った結果、問題は /tmp フォルダーへの書き込み機能ではないと結論付けることができました。実際、問題は私の header.php インクルード ファイルの JavaScript 関数でした。

function logout()
{
    <?
session_destroy();
?>
alert("you have been logged out");
}

関数内にあるという事実を避けていました。おそらく、2 つの言語のコンパイル方法が異なることを確認したのは私のせいです。セッションの破棄を処理するために単純な ajax 呼び出しを行いましたが、すべてが順調に進んでいます。他の誰かが同様の問題を抱えているかどうか、そしてこれが彼らを助けるかどうか疑問に思います.

于 2012-07-20T20:35:38.313 に答える
0

同じ一般的な問題があり、何らかの理由で JavaScript を使用してセッション Cookie を削除していたことが判明しました。

document.cookie = '[session_name]' +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
于 2015-10-07T20:47:18.913 に答える