【问题标题】:I get a blank page until a session cookie is set - PHP 4.4.9在设置会话 cookie 之前,我得到一个空白页面 - PHP 4.4.9
【发布时间】:2011-05-02 23:09:26
【问题描述】:

第一次访问时,我得到一个空白页面 - 如果我单击“查看源代码”,则没有任何文字,但会添加一个会话 cookie。 第二,一切正常运行。 如果我删除 cookie,我会再次得到一个空白页面。 在所有浏览器中都相同 - Firefox 4、IE 9、Chrome 11。 PHP 4.4.9

<?php
session_start();
echo "hello";
?>

更新:

Session Support     enabled
Registered save handlers    files user 

session.auto_start  Off Off
session.bug_compat_42   On  On
session.bug_compat_warn On  On
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    no value    no value
session.entropy_length  0   0
session.gc_divisor  100 100
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   /tmp    /tmp
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    Off Off
session.use_trans_sid   On  On

这是我关于会话的 phpinfo 我已经尝试过 ini_set("display_errors", 1); 我还尝试将 ini_set('error_log') 设置为可写文件夹中的文件,但我没有收到任何错误(即使我将“asdfasdf(asdf(0)}”写为第一行。)

【问题讨论】:

  • 您是否无法更新到较新的 PHP 版本?
  • 开启错误检查,会有你看不到的错误。
  • 这不是我的服务器,所以我无法更新。无论如何,我怀疑是否会发布一个 PHP 版本,这会产生如此明显的错误。我尝试添加“error_reporting(E_ALL);”在 session_start() 之前,但我仍然得到一个空白页
  • 添加:error_reporting(E_ALL); ini_set("display_errors", 1);
  • phpinfo() 显示有关会话的哪些信息?有什么明显的错误吗?

标签: php session php4


【解决方案1】:

听起来你的 php.ini 有问题

我会检查“session.save_path”和“session.use_cookies”条目以及引用的目录(权限等)。还可以使用 phpinfo() 来发现配置错误。

【讨论】:

  • 您可以尝试将 session.use_only_cookies 更改为 On。 /tmp 也是服务器上具有所有相关权限和足够可用空间的有效路径吗?你能清除所有现有的会话吗?
  • 另外,您是否查看了错误日志以查看访问页面时是否正在写入任何内容?
  • 我添加了 ini_set('session.use_only_cookies', 'On');作为第一行,它现在可以工作了。不过,我很好奇是什么问题? + 不知道如何访问错误日志 phpinfo 说 error_log 没有价值,如果有帮助的话
  • 如果无法查看正在生成的实际错误,这将很难判断,但强制使用 cookie 并不是一件坏事,因为它可以防止涉及 URL 中会话 ID 的攻击。我想你正在使用 Apache?如果是这样,您可以尝试查看 /var/log/httpd/error_log
  • 是的,它是 apache。这是一个公共服务器,我怀疑我是否拥有必要的权限。我会用谷歌搜索是否有办法获取错误日志。谢谢
【解决方案2】:

作为一种解决方法,在启动之前检查会话并在启动后立即刷新/重定向页面

【讨论】:

  • 这可行,但如果可能的话,我更喜欢“更清洁”的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 2010-11-15
  • 2015-08-13
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多