飞龙博客

妙法莲华经

服务器不支持session怎么办

feilong.org 修订于2012-02-10 03:30:20

在使用php和session存储数据的时候,本地xampp服务器能使用session,但ftp上传到远程虚拟主机服务器,飞龙发现竟然没有存储session。莫非服务器不支持session 还是php代码本日志更新网址:http://feilong.org/session-php-webserver-no 加入收藏夹,查看更方便。

我们下了解一下session的机制:Session数据保存在服务器端, 但是每一个客户端都需要保存一个SessionID, SessionID保存在Cookies中, 关闭浏览器时过期.在向服务器发送的HTTP请求中会包含SessionID, 服务器端根据SessionID获取获取此用户的Session信息。

飞龙用session的和php编写的存储程序参见: http://feilong.org/ajax-session-click-add-remove-favorate 本地服务器是win7+xampp集成环境,运行session结果显示正常存储了session数据。

然后放到上linux Apache mysql的虚拟主机上,用session的程序以后虽然提示成功,但是session数据在接受页并没显示,说明session数据并没有存储。

网上查了一些答案:session_start()的前面有echo之类的语句,包括html空行?如果服务器不支持session,先要开启?session 也要用到cookie,您看下您的cookie是否已禁用?本机不报错,因为你本机的php配置去掉了错误显示?

一般来说,不让header(); 之前有echo或html,这个是个很细致的检查工作,有没有办法避免呢,也就是如何使用session_start(); 才能让让header(); 之前有echo或html,也不会出错呢?

session的输入缓冲机制为我们解决了这个问题。

ob_start();

// some html
// echo 'feilong before';

//anything

@session_start();
//header(......);

// some html
// echo 'feilong after';

//some html
//anything

ob_flush();

经过测试,飞龙发现远程主机也可以运行session并成功存储数据了,并不是服务器不支持session的原因。

更新网址:https://feilong.org/session-php-webserver-no
最初发布:20120210 03:30:20 feilong.org 于广州

加入收藏夹,查看更方便。

所在分类: 网站开发

新作:

旧文: