Home >Backend Development >PHP Tutorial >php启动session失败异常解决方法

php启动session失败异常解决方法

WBOY
WBOYOriginal
2016-06-13 11:10:101281browse

php启动session失败错误解决办法

原文地址:http://www.hjaa.net/?p=1149

php启动session失败错误原因应该是:php.ini中,有关session部分的设置存在错误,引发session?cookies无法发送和保持。

排查步骤:

1、将以下文字保存为phpinfo.php,并上传到服务器要可以访问,比如本站http://www.hjaa.net/phpinfo.php

phpinfo();

?>

重点关注session部分

2、session.cookie_domain设置了A域名,即session.cookie_domain?=?A域名结果导致session?cookies在B域名失效。

解决办法1:将php.ini中的session.cookie_domain设置为空,即:session.cookie_domain?=

解决办法2:session.cookie_domain?=设置成你使用的域名

3、php.ini中,session.cookie_path设置过于严格。比如设置为:session.cookie_path?=?/hjaa/也就是说只允许根域名下面的hjaa目录和子目录才能使用session(更确切来讲,如果session.cookie_domain设置了A域名,则表示A域名下的hjaa目录和子目录才允许使用session)

解决办法:将php.ini中的session.cookie_path设置为“/”(不含双引号)或者你认为的更加宽松的安全设置,比如:?session.cookie_path?=?/

4、php.ini中,将session.cookie_path和session.save_path两者搞混,以为session.cookie_path是表示session临时文件存储的路径。但实际上session.cookie_path是表示session生效的网站域,和服务器的文件权限无关;session.save_path才是设置session临时文件存储的路径。比如将session.cookie_path设置为:session.cookie_path?=?C:/WINDOWS/TEMP从而引发故障。

5、session.save_path设置的目录没有写权限;或者设置不正确(比如设置的文件夹根本不存在)。请注意:如果为空,则表示使用默认的系统临时文件夹路径。windows一般为“%SystemRoot%\TEMP”,unix一般为“/tmp”

解决办法:

(1)、如果session.save_path不留空,请确认该设置值对应的确实是一个文件夹、并且该文件夹存在。如果确实不知道如何设置,请注释此设置、或者改为空值,让php使用默认设置。

(2)、在对应目录中,给予相应用户的写权限比如对于IIS,应给予Internet来宾账户的写权限。

6、当session.auto_start = on时,执行 session_start() 将产生新的 session_idsession.auto_start = on 的优点在于,任何时候都不会因忘记执行 session_start() 或 session_start() 在程序里的位置不对,而导致错误缺点在于,如果你使用的是第三方代码,则必须删去其中的全部 session_start() 。否则将不能得到正确的结果

解决办法:

(1)session.auto_start = Off

(2)把程序中的session_start();去掉

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn