1

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

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

session.save_path = "/tmp"

/tmp存在。

但我仍然有问题。我可以通过前面session_start()的 with来停止它挂起,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

我在网络服务器上安装了 squid。这会是个问题吗?

谢谢,
彼得

4

5 回答 5

4

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

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

于 2012-12-27T03:41:26.040 回答
4

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

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

我现在没有问题。我不敢说它解决了这个问题,因为它似乎没有立即解决它。

谢谢大家的帮助,
彼得。

于 2012-12-31T02:00:47.423 回答
1
if(!isset($_SESSION)) 
{ 
    session_start(); 
}

在 PHP 文件的顶部使用它!

并供您参考:session_destroy()用于结束会话。

于 2012-12-27T03:39:16.040 回答
1

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

尝试检查这个问题我调用 session_start() 脚本挂起并且没有任何反应

而这个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,您可以找到许多其他有相同问题的人及其解决方法

于 2012-12-27T03:51:13.760 回答
1

首先 - 尝试其他浏览器!

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

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

我关闭了 IE ;) - 回到 chrome,寻找 cookie (PHP_SESS_ID),删除它,一切都恢复正常了!

好吧,好的部分是 - 就像你们一样,我必须复习我对 -jay- session 的了解!;)

于 2014-04-15T12:01:49.113 回答