【发布时间】:2012-12-27 03:22:36
【问题描述】:
我有一个带有 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() 前面加上 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。这会是个问题吗?
谢谢,
彼得
【问题讨论】:
-
为什么你的服务器使用 Gnome?
-
没有像 session_end() 这样的函数,把它放进去你会得到一个终止脚本的致命错误。打开错误报告,因为它看起来像是关闭或不显示错误。
-
session_destroy() 用于结束会话
-
你好像不止一次调用
session_start(),或者是会话没有正确销毁造成的 -
检查一个运行很长时间(或永远不会结束)的 php 脚本。一次只有 1 个脚本可以访问同一个用户会话,其他脚本将等待有问题的脚本完成。
标签: php session ubuntu-11.04