仅在GoDaddy上发出PHP Session问题(警告:session_start():无法发送会话cookie)

时间:2015-04-21 21:12:22

标签: php mysql session cookies

我目前正在为GoDaddy托管的客户注册系统。

我之前从未在Hostgator上遇到过这类问题,而是在OS X上的PHP测试服务器上进行本地测试。

这也是一个相当简单的脚本。 common.php访问MySQL数据库,所有页面(登录,注册等)都包含common.php。当用户登录等时会开始会话

我在页面顶部看到以下错误:

  

警告:session_start():open(/ home / content / 10/12114910 / tmp / sess_trmok9fgtb527mjp21a76shf54,O_RDWR)失败:/ home / content / 10/12114910 / html / common中没有此类文件或目录(2)。第86行的PHP

     

警告:session_start():无法发送会话cookie - 已经在/ home / content / 10/12114910 / html中发送的输出(/home/content/10/12114910/html/common.php:86中的输出)第86行的/common.php

     

警告:session_start():无法发送会话缓存限制器 - 已在/ home / content / 10/12114910 / html中发送的标头(在/home/content/10/12114910/html/common.php:86中开始输出)第86行的/common.php

以下错误位于页面底部。

  

警告:未知:打开(/ home / content / 10/12114910 / tmp / sess_trmok9fgtb527mjp21a76shf54,O_RDWR)失败:第0行的“未知”中没有此类文件或目录(2)

     

警告:未知:无法写入会话数据(文件)。请验证session.save_path的当前设置是否正确()在第0行的未知中

再一次,这只是一个GoDaddy问题。我的客户端最初是在Windows主机上,这根本不起作用,我将它们切换到Linux主机。

他们使用的是PHP 5.3版,我将其更改为5.4,但我仍然没有运气。

我从来没有搞过php.ini文件。我需要创建一个吗?我听说将其上传到public_html文件夹会覆盖服务器上的那个,即使我们在共享主机方案上也是如此。

我是否还需要SSH访问才能创建tmp文件夹并为其设置适当的权限?

1 个答案:

答案 0 :(得分:5)

这通常很容易解决蹩脚的提供商(顺便说一下,我不推荐GoDaddy)。

以下是我如何修复它,希望它会对你有帮助。

  

步骤1:创建一个目录并将其称为_sessions或其中的某个目录   性质。

     

步骤2:给它一个775的chmod,以便Web服务器可以写入它。

     

第3步:在第一个运行的脚本上,就在顶部session_save_path("./_sessions");

     

步骤4(可选,但建议):在.htaccess文件中添加deny from all以防止人们访问目录,或者只是chmod 776。

在此处详细了解session_save_path()php.net/session_save_path