【问题标题】:PHP Session issue only on GoDaddy (Warning: session_start(): Cannot send session cookie)仅在 GoDaddy 上的 PHP 会话问题(警告:session_start():无法发送会话 cookie)
【发布时间】:2015-06-29 06:19:03
【问题描述】:

我目前正在为 GoDaddy 主机上的客户开发用户注册系统。

我之前在 Hostgator 上以及在 OS X 上的 PHP 测试服务器上进行本地测试时从未遇到过此类问题。

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

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

警告:session_start(): open(/home/content/10/12114910/tmp/sess_trmok9fgtb527mjp21a76shf54, O_RDWR) failed: No such file or directory (2) in /home/content/10/12114910/html/common.第86行的php

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

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

以下错误位于页面底部。

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

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

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

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

我从来没有弄乱过 php.ini 文件。我需要创建一个吗?我听说将其上传到 public_html 文件夹会覆盖服务器上的文件夹,即使我们使用的是共享托管计划。

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

【问题讨论】:

  • 你的代码在哪里
  • 如果你做var_dump(session_save_path()),你会得到什么?您的应用程序是否对指定的文件路径具有写入权限?

标签: php mysql session cookies


【解决方案1】:

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

以下是我的修复方法,希望对您有所帮助。

第 1 步:创建一个目录并将其命名为 _sessions 或类似名称 自然。

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

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

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

在此处了解有关session_save_path() 的更多信息:php.net/session_save_path

【讨论】:

  • 非常感谢!我将建议我的客户离开 GoDaddy。您在他们的支持之前回复了我,对此我非常感激。
  • @AndrewMRiv 我已经改进了我的答案,给你一个小提示,请参阅第 4 步。
猜你喜欢
  • 2014-03-22
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 2013-02-28
  • 2014-06-24
  • 2012-01-27
  • 1970-01-01
相关资源
最近更新 更多