こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

XAMPP1.7.3でSetcookieで固まる

XAMPP 1.7.3を使って、windows7(64bit)、PHPでサイト構築をしています。

apache 2.2.14
PHP 5.3.1
MYSQL 5.1.41

を使用しています。

レンタルサーバー上では普通に動くスクリプトが、localhost(PC)のテスト環境では、頻繁に画面が
フリーズ(待機状態で固まる)になります。

ローカルとサーバー上で、phpinfo()の結果を見比べても違いはないようです。

どうやら、Setcookie または session_start をするときに、不具合が発生するようです。
会員ログインをするサイトで、cookieを用いた認証なのですが、ログインしていない状況では、不具合は「ほぼ」発生しません。(※まったくでは無いです)

また、スクリプトを切り分けて、どの箇所まではフリーズしないのか、どこで不具合が発生するかを調べた結果、

echo "test";exit;
session_start();

では出力されますが、

session_start();
echo "test";exit;

では、待機状態になります。

ただし、上記も必ず同じ動作ではないので、不確定です。

その他、XAMPPの問題かと思い、一度は1.7.4を入れなおしましたが、
症状が治っていない上に、他のエラーが出るので、また1.7.3に戻しました。

また、画面が一度待機状態で固まると、今のところ、XAMPPのコンパネでapache再起動しか改善する方法がなく、またしばらくすると同じことの繰り返しです。
そして、XAMPPで停止するときに、かなり時間がかかり、必ず一度は「応答なし」になり、しばらくして、停止が完了します。

apacheのエラーログは

[Sat Apr 09 17:59:31 2011] [notice] Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
[Sat Apr 09 17:59:31 2011] [notice] Server built: Nov 11 2009 14:29:03
[Sat Apr 09 17:59:31 2011] [notice] Parent: Created child process 5880
[Sat Apr 09 17:59:34 2011] [notice] Digest: generating secret for digest authentication ...
[Sat Apr 09 17:59:34 2011] [notice] Digest: done
[Sat Apr 09 17:59:34 2011] [notice] Child 5880: Child process is running
[Sat Apr 09 17:59:34 2011] [notice] Child 5880: Acquired the start mutex.
[Sat Apr 09 17:59:34 2011] [notice] Child 5880: Starting 150 worker threads.
[Sat Apr 09 17:59:34 2011] [notice] Child 5880: Starting thread to listen on port 443.
[Sat Apr 09 17:59:34 2011] [notice] Child 5880: Starting thread to listen on port 80.
[Sat Apr 09 17:59:34 2011] [notice] Child 5880: Starting thread to listen on port 443.
[Sat Apr 09 17:59:34 2011] [notice] Child 5880: Starting thread to listen on port 80.

こんな感じです。
そもそも、apacheなのか、PHPなのか、MYSQLなのかが原因がはっきりしていないのが現状です。
(MYSQLは関係ないとこれまで思っていましたが、原因がわからないので、一応除いていません)

ブラウザでcookieを無効設定にしても、同様の現象は起きるようです。


何が原因か調べる方法や、または同じような経験をして対策をご存知の方がいたら、
ぜひ回答をお願いします。

投稿日時 - 2011-07-15 14:35:38

QNo.6877339

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

echo "test";exit;
session_start();



session_start();
echo "test";exit;

の違いは、セッションが実際に始まっているかどうか
(後者は開始されない)

ですので、セッション管理ファイルの書き込みで処理待ちになっているような気がします。

windows7の場合、書き込み権限が無い場合にアプリケーションが処理待ちになってしまうことがよくあるので、
session.save_path
を確認し、誰でも書き込めるように設定するか、apacheを管理者権限で動かしてみると解決するかも知れません。

投稿日時 - 2011-07-30 15:46:15

あなたにオススメの質問