【问题标题】:Unable to set session in server,working in localhost无法在服务器中设置会话,在 localhost 中工作
【发布时间】:2013-03-26 00:40:43
【问题描述】:

我在我的网站上登录时将用户 ID 设置为会话。在设置后不久回显会话变量时,它会显示出来。但之后我将其重定向到另一个页面,其中会话被设置,然后检查会话.但它显示未定义索引user_id的错误消息。此代码在localhost中工作,也在服务器上工作。但现在它显示错误。由于设置会话的问题,无法登录网站。

$_SESSION['user_id'] = $user_id;
header('location:home.php');

在 home.php 中

include('session.php');

在 session.php 中

session_save_path('include/session_store');
session_start();
if(!(isset($_SESSION['user_id'])))
{
header('location:signin.php');
}

根据其他 stackoverflow 用户的建议,我尝试了这个。创建了一个 test.php 文件。

session_save_path('include/session_store');
session_start();
$_SESSION['yahoo'] = 'yahoo';
header('location:test2.php');

在test2.php中

session_save_path('include/session_store');
session_start();
echo $_SESSION['yahoo'];

现在在 localhost 中打印 yahoo。但在服务器中,显示空白屏幕。session_store 文件夹也包含一些 0kb 文件。

【问题讨论】:

  • header('location:home.php')的文件中,有session_start()吗?
  • 你在home.php文件上写了session_start吗?
  • 提示:在header()之后写上exit();
  • 我已经在 session.php 中添加了 session_start,那么是否需要在 home.php 中单独启动 session?
  • 请您的服务器人员在服务器上设置会话路径。如果同一页面在本地主机上而不是在服务器上运行,则可以肯定服务器无法与会话相同。

标签: php session


【解决方案1】:

确保您在 signin.php 上执行 session_save_path('include/session_store'); session_start(); 并确保 include/session_store 是可写的

你说它在本地主机上工作,那么问题肯定是 include/session_store 不可写。

【讨论】:

  • session_store 也是可写的。这可能是一些服务器配置问题吗?但是代码昨天还在工作。我用以前工作的代码替换了最近编辑的代码。但是很有道理。跨度>
  • 此外,当我检查每次尝试登录时都会创建一个 0 字节文件。
  • 如果可行,请手动尝试一些基于会话的简单虚拟代码,这意味着问题与您的 php 文件有关,否则意味着服务器问题,
  • 并仔细检查phpinfo。
【解决方案2】:

您对 include/session_store 有正确的权限吗?应该是777。 您可以打印 echo session_save_path() 以确保已设置该选项。 最后,在不更改 save_path 的情况下,会话可以正常工作吗?您的服务器可能有一些可能对您的会话产生影响的重定向规则 (mod_proxy)。

如果你有 php 5.4,你可以尝试打印 session_status() http://www.php.net/manual/it/function.session-status.php

【讨论】:

  • 我添加了代码 session_save_path('include/session_store');因为没有设置会话。
  • 尝试打印出 php_info。我认为这个问题取决于服务器设置 php 或 apache
  • 我尝试打印php_info,但找不到任何东西。启用错误报告时,显示的错误消息是未定义索引user_id。
  • phpinfo中有一个与会话信息相关的部分,这就是原因。如果 php 配置正确...仍然只有 apache...您是否也从其他计算机上验证过这个问题?
【解决方案3】:

问题可能来自存储会话的路径 在您的 Web 托管文件管理器上,将会话路径设置为 /tmp/

如果没有名为 tmp 的文件夹,则创建它

【讨论】:

  • 请分享更多细节。关于会话存储文件夹权限的问题已经在其他答案中提到过,这些答案已有八年多的历史了。您想突出显示任何新内容吗?
  • 看起来这个问题是 8 年前提出的。也许把你的精力集中在发帖者可能仍在寻求答案的近期问题上。
猜你喜欢
  • 2022-11-11
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多