PHP session_start();已经开始挂起服务器了

时间:2012-12-27 03:22:36

标签: php session ubuntu-11.04

我设置了一个带有Web服务器和应用程序服务器的DMZ,它们都在gnome下运行Ubuntu(Web服务器上的v11.04和应用程序服务器上的v11.10)。 session_start()已开始在应用程序服务器上挂起。代码位于应用程序服务器上,当我访问我的网站并访问带有session_start()调用的页面时,代码不会挂起。似乎每个session_start()都已经开始挂在应用程序服务器上,但是当我从其他计算机或通过Web访问它们时,我对相关页面没有任何问题。此外,我刚刚开始在应用程序服务器上遇到此问题,而没有对我的PHP代码进行任何更改。是否有些缓冲区已经填满并需要清除?

我尝试编辑/etc/php5/apache2/php.ini并设置

session.save_path = "/tmp"

/tmp存在。

但我仍然有问题。我可以通过session_start()前加session_end()来阻止它,但它不会执行文件中剩余的PHP或html代码。

/var/log/apache2/error.log包含以下消息:

PHP Notice:  A session had already been started - ignoring session_start() in
/var/www/DraculaPgm.php on line 101, referer: 
http://MyWebSite.com/ApplicationServer/Dracula.php

对此的任何帮助将不胜感激,
彼得。

2012年12月29日更新

感谢所有回复此问题的人。不幸的是,我尝试了所有的建议,'session_start()'仍然挂起。但是,如果我将其保留几分钟,则会出现以下错误消息。

Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /ApplicationServer/Dracula.php.

Reason: Error reading from remote server

Apache/2.2.17 (Ubuntu) Server at MyWebSite.com Port 80

我在Web服务器上安装了squid。这可能是个问题吗?

谢谢,
彼得

5 个答案:

答案 0 :(得分:4)

这听起来像配置问题。确保PHP报告所有错误,即error_reporting(E_ALL)并显示或记录所有错误。 (您甚至可能希望在php.ini中启用display_startup_errors) - 报告所有错误可能会揭示正在发生的事情。 (如果您需要帮助,可以将您从此处获得的任何错误发布为编辑)您可能还需要查看以下内容以解决会话问题:

或者,如果这些都没有显示任何内容,您可能需要阅读https://bugs.php.net/bug.php?id=28856&edit=1上的错误报告,具体取决于您运行的PHP版本。

答案 1 :(得分:3)

我将'session_start()'更改为以下块。

if(!isset($_SESSION))
{
    session_destroy();
    session_start();
}

我现在没有问题。我犹豫是否说它解决了这个问题,因为它似乎没有马上修复它。

感谢大家的帮助,
彼得。

答案 2 :(得分:1)

if(!isset($_SESSION)) 
{ 
    session_start(); 
}

在PHP文件的顶部使用它!

并且您的信息:session_destroy()用于结束会话。

答案 3 :(得分:1)

尝试通过/tmp更改chmod 777 /tmp文件夹的权限,并检查其是否正常工作。如果正常工作,请更改权限模式以使其更安全

尝试查看此问题I call session_start() the script hangs and nothing happens

这是http://www.projectpier.org/node/1934

  

“似乎会话文件是专门打开的。有些人   场合(Windows)我发现文件锁没有被释放   因任何原因正确,因此导致session_start()   在任何未来的脚本执行中无限地挂起。我绕道而行   问题是使用session_set_save_handler()并确保写入   函数使用fopen($ file,'w')而不是fopen($ file,'x')“

如果您通过http://php.net/manual/en/function.session-start.php

,您可以找到许多其他人遇到相同问题及其解决方法

答案 4 :(得分:1)

  

在其他任何事情之前 - 尝试其他浏览器!

我刚遇到这个session_start问题。我检查了我的tmp文件夹和所有内容,我打算打电话给我的托管服务提供商,直到我认为我应该首先尝试另一个浏览器,因为它可能与会话cookie有关。

我使用chrome,所以我在IE中进行了测试,发现情况确实如此:它在另一个浏览器中工作

我关闭了IE;) - 回到chrome,查找了cookie(PHP_SESS_ID),删除了它,一切都再次运行了!

嗯,好的部分是 - 就像你们这些人一样,我得知清楚 - 会话! ;)

相关问题