原文地址:http://www.hjaa.net/?p=1149
php启动session失败错误原因应该是:php.ini中,有关session部分的设置存在错误,引发session cookies无法发送和保持。
排查步骤:
1、将以下文字保存为phpinfo.php,并上传到服务器要可以访问,比如本站http://www.hjaa.net/phpinfo.php
<?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();去掉
分享到:
相关推荐
在PHP中,启动session的主要函数是`session_start()`。这个函数必须在任何HTML代码或输出之前调用,因为它会发送一个cookie到浏览器来识别当前会话。如果在HTML或其他输出之后调用,会导致错误,因为PHP已经发送了...
本文将分析常见的session_start()错误原因,并提供相应的解决方法。 1. 输出缓冲区未开启导致错误: 在PHP脚本中,如果在调用session_start()函数之前有任何的HTML输出,比如echo语句,PHP会自动发送HTTP头部信息。...
当用户访问一个PHP页面并启动Session时,服务器会为该用户生成一个唯一的Session ID,并将其通过Cookie发送回用户的浏览器。此后,每当用户访问其他支持Session的页面时,浏览器都会将这个Session ID发送回去,使得...
- 如果上述方法仍然无法解决问题,建议进一步检查登录逻辑代码,确保在登录过程中正确调用了`session_start()`函数,并且在登录后正确地设置了用户会话数据。 5. **错误日志排查:** - 查看服务器的日志文件,如...
最根本的解决方法是在调用`session_start()`之前确保没有任何内容被输出。这包括空白字符、制表符等,因为即使是空格也会被视作输出内容。检查代码中的每个文件,确保在`session_start()`调用之前没有输出。 2. **...
要启动session,需要调用`session_start()`: ```php session_start(); $_SESSION['views'] = "test20"; echo "Session: " . $_SESSION['views']; ``` 在CodeIgniter中,session的使用稍微复杂一些。首先,需要...
解决办法是将 session.save_path 设置为一个绝对路径,例如 session.save_path = c:\windows\temp。 4. 错误信息显示 在 PHP.ini 中,将 display_errors 设置为 On,并且 error_reporting 设置为 E_ALL,可以显示...
原生的PHP Session操作包括`session_start()`来启动Session,`$_SESSION`全局数组用于存取数据,以及`session_destroy()`来销毁Session。然而,这种基础的Session管理方式往往在大型项目中显得过于简单,不易于管理...
解决方法是修改session.save_path为一个绝对路径,例如session.save_path=c:windows emp。 4.错误信息显示 当php.ini的display_errors = on并且error_reporting = E_ALL时,将显示所有的错误和提示。在调试时,...
如果登录失败,则引导用户返回登录页面,并提示相应的错误信息。 在后台文件(admin.php)中,我们需要在页面加载之初启动session,并检查session中是否保存了用户的登录名。如果没有,说明用户未登录或者登录信息...
3. **初始化与使用**:在PHP中,`session_start()`函数用于启动Session,之后可以使用`$_SESSION`全局数组存储和访问Session数据。Session启动前应避免任何输出,否则可能导致错误。 4. **配置与管理**:在`...
解决这类问题的办法是确保`session_start()`是脚本中第一个执行的操作。 2. 另一个常见的错误是“Warning: open (F:/689phpsessiondatasess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed”。这个警告表明尝试...
在描述中提到的错误信息主要涉及到Mantis BTS的配置问题,具体来说是关于`session.save_path`的设置。`session.save_path`是PHP配置项之一,用于指定会话数据存储的位置。在本例中,该路径被设置为`C:/DOCUME~1/...
### 正确配置PHP以解决会话创建错误 在开发基于PHP的应用程序过程中,经常会遇到一个常见的错误:“无法在发生错误时创建会话,请检查PHP或网站服务器日志,并正确配置PHP安装”。此错误通常与PHP会话管理、服务器...
### PHP Session 应用实例:登录验证 在本篇文章中,我们将通过一个具体的登录系统案例来深入了解PHP Session是如何被应用于用户认证与管理的。通过这个示例,我们不仅能够掌握PHP Session的基本用法,还能了解到...
1. **Session的启动**: 脚本通过`session_start()`函数开启一个新的会话。这允许服务器为每个用户创建一个唯一的会话ID,并在客户端存储(通常通过cookie)以便后续请求识别。 2. **用户认证**: 用户输入的登录...
使用phpPgAdmin时,用户可能会遇到各种错误,以下是针对安装错误、登录错误以及一些其他常见问题的详细解决办法。 安装错误的解决办法: 1. 如果在尝试使用phpPgAdmin时出现提示,说明PHP没有正确编译支持...
`session_start()`函数启动会话,`$_SESSION`全局数组用于存储会话数据。通过设置`session.cookie_lifetime`和`session.gc_maxlifetime`可以控制会话的有效期。 4. **Cookie保持登录**:为了实现“记住我”功能,`...
6. **会话管理**:登录成功后,PHP使用`session_start()`启动会话,并通过`$_SESSION`数组存储用户信息。这使得服务器能够识别已登录的用户,实现会话跟踪。 7. **错误处理与反馈**:当用户输入无效或数据库操作...