ホームページ  >  記事  >  バックエンド開発  >  Windows で Apache + PHP セッションが失われるという痛い経験

Windows で Apache + PHP セッションが失われるという痛い経験

WBOY
WBOYオリジナル
2016-08-08 09:26:48985ブラウズ

今日の作業は、PHP サイトを新しいサーバーに移行することです。

Windows Server 2008 仮想マシンを作成し、その仮想マシン上で net stop http サービスを停止し (ポート 80 の競合を避けるため)、Apache + PHP をインストールして構成し、サイトを新しいサーバーに移行すると、サイトが正常に開き、Apache が起動します。 + PHP は正常に動作し、MySql サーバーへの接続も正常で、すべてが順調でした。30 分で作業を完了するつもりでしたが、その後悪夢が始まりました。

このサイトはシングル サインオンを使用しており、ログイン プロセスには Web サービスへの SOAP 呼び出しを含む JavaScript 非同期操作が含まれています。ログイン後、エラー メッセージは表示されずにログイン ページに戻りました。次の可能性が考えられます。

1. アカウントが異常ですか?他のシステムでテストしたところ、アカウントのステータスは正常でした。

2. JavaScript の非同期操作は失敗しましたか? IE 開発者ツールを使用して Javascript の戻り値を追跡します。戻り値は正常です。

3. Web サービスの呼び出しは失敗しましたか? Fiddler を使用して、検証が成功し、ローカル ログインが完了したことを示す Web サービスの戻り値を追跡します。

追跡とデバッグを繰り返した結果、サイトの SESSION が失われたのではないかと疑い始めました。

1. JavaScript の非同期操作で SESSION の設定に失敗しました。同期アクセスと非同期アクセスの SESSION ID が異なるためでしょうか。これは Flash の非同期呼び出しでのみ発生しましたが、JavaScript でも発生しますか?出力同期アクセスと非同期アクセスのSESSION IDの値は同じです。

2. PHP テストページを 2 つ作成し、1 つのページで SESSION を設定しますが、もう 1 つのページではそれを読み取ることができません。 php.ini 関連の設定を確認してください。session.save_path = "C:/php/tmp" パスを確認してください。ただし、SESSION 関連のファイルはなく、設定には tmp ディレクトリも含まれていません。

結末はとんでもないです。tmp ディレクトリがないと、PHP は SESSION ファイルを書き込むことができず、当然 SESSION は失われます。 tmp ディレクトリがないのはなぜですか? インストール パッケージに含まれていないためです...私の 3 時間。

以上、Windows で Apache + PHP SESSION が切れた痛い経験を内容も含めて紹介しましたので、PHP チュートリアルに興味のある友人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。