1

ページを Windows 上の EasyPHP から Linux サーバーに移動したところ、この新しい問題が発生しました。ページをリロードするか、リンクをクリックして、セッションでアクセスできるはずのページ (または別のページ) に戻ると、セッション情報が失われ、ユーザーがログアウトされます。

から改作されたこのコードのスニペットはW3、問題を示しているようです。

<?php

//Thing1.php
session_start();
if (! isset ($_SESSION['views'])) $_SESSION['views']='first load';
else $_SESSION['views']='reloaded';
?>

<html>
<body>

<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>
<br>
<a href="thing1.php">Reload this page</a>

</body>
</html>

EasyPHP では、最初は が表示されますが、更新Pageviews=first loadするかリンクをクリックして同じページに戻ると、常に と表示されますPageviews = reloaded

私のLinuxボックスでは、常に表示されますPageviews=first load$_SESSIONこれは、常に空の配列を出力する場合と一致しています。

Linux ボックスは PHP 5.3.10-1unbuntu3.6 と Apache 2.2 を実行しています。EasyPHP には PHP 5.4.4 と Apache 2.4.2 があります。

ここで必要なのは、EasyPHP での動作です。Linux バージョンでも$_SESSION変数を記憶するようにします。

ありがとう

4

2 に答える 2

3

が 1 ページ目だけでなく 2 ページ目でも呼び出されていることをsession_start()確認し、 を呼び出す前に HTML または PHP の出力 (echo、print など) がないことを確認してくださいsession_start()

于 2013-04-12T17:56:46.073 に答える
2

1) Cookie を調べて、PHPSESSID という名前の Cookie があるかどうかを確認します。2) php.ini ファイルで session.save_path を探します。そのパスに移動して、ファイルが表示されるかどうかを確認します。

これらのいずれかが当てはまらない場合は、セッション構成に問題があります。特に、セッションがオンになっていることを確認してください - php.ini を編集し、session.save_path のディレクトリを修正する必要があるかもしれません - デフォルトの "/tmp" の代わりに "c:/temp" のような Windows ディレクトリを使用してください。

于 2013-04-12T18:52:08.230 に答える