Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法在服务器中设置会话,正在本地主机中工作_Php_Session - Fatal编程技术网

Php 无法在服务器中设置会话,正在本地主机中工作

Php 无法在服务器中设置会话,正在本地主机中工作,php,session,Php,Session,我正在将用户id设置为登录到我的网站时的会话。在设置会话变量后不久,将显示该会话变量。但在此之后,我会将其重定向到另一个页面,在该页面上对会话进行策略设置,然后检查会话。但它会显示错误消息,未定义索引用户id。此代码在localhost中工作,也在服务器中工作。但现在显示错误。由于设置会话时出现问题,无法登录到网站 $_SESSION['user_id'] = $user_id; header('location:home.php'); 在home.php中 include('session.

我正在将用户id设置为登录到我的网站时的会话。在设置会话变量后不久,将显示该会话变量。但在此之后,我会将其重定向到另一个页面,在该页面上对会话进行策略设置,然后检查会话。但它会显示错误消息,未定义索引用户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'];

现在,在本地主机中,yahoo被打印出来。但在服务器中,会显示空白屏幕。会话存储文件夹也包含一些0kb的文件。

确保您执行
会话存储路径('include/session\u store');
会话_start(),并确保
include/session\u store
是可写的


您说过它正在工作,localhost,那么问题肯定是include/session\u存储不可写

您是否对include/session\u store拥有正确的权限?必须是777。 您可以打印echo session\u save\u path()以确保该选项已设置。 最后,在不更改保存路径的情况下,会话是否正常工作?您的服务器可能有一些重定向规则(mod_proxy),可能会对您的会话产生影响

如果您有PHP5.4,您可以尝试打印会话状态()

在带有
标题的文件('location:home.php')
中,您是否有
会话启动()
?您是否在
home.php
文件上写入
会话启动
?提示:写入
退出()
就在
header()
之后,我在session.php中添加了session\u start。那么是否需要在home.php中单独启动会话?请您的服务器人员在服务器上设置会话路径。如果同一页在本地主机而不是服务器上工作,可以肯定的是,服务器无法使用相同的会话。会话存储也是可写的。这可能是服务器配置问题吗?但是代码昨天还在工作。我用以前的工作代码替换了最近编辑的代码。但是,在我检查时,每次尝试写入时都会创建一个0字节的文件登录。请手动尝试其他一些基于会话的简单伪代码如果有效,这意味着问题与您的php文件有关,否则意味着服务器问题,请仔细检查phpinfo。我添加了代码会话保存路径(“include/session\u store”);因为未设置会话。请尝试打印php_信息。我认为这个问题取决于php或Apache的服务器设置。我尝试打印php_信息,但找不到任何内容。启用错误报告时,显示的错误消息是未定义的索引用户id。在phpinfo中有一个与会话信息相关的部分,这就是原因。如果php配置正确。。。只剩下阿帕奇。。。你也从其他计算机上验证过这个问题吗?