我设置了一个带有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。这可能是个问题吗?
谢谢,
彼得
答案 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')“
答案 4 :(得分:1)
在其他任何事情之前 - 尝试其他浏览器!
我刚遇到这个session_start问题。我检查了我的tmp文件夹和所有内容,我打算打电话给我的托管服务提供商,直到我认为我应该首先尝试另一个浏览器,因为它可能与会话cookie有关。
我使用chrome,所以我在IE中进行了测试,发现情况确实如此:它在另一个浏览器中工作!
我关闭了IE;) - 回到chrome,查找了cookie(PHP_SESS_ID),删除了它,一切都再次运行了!
嗯,好的部分是 - 就像你们这些人一样,我得知清楚 - 会话! ;)