php - PHP session_start 返回 false,$_SESSION 变量不是持久的
问题描述
让我首先说我对 PHP 比较陌生,如果这看起来微不足道,请道歉。另外,如果已经回答了类似的情况,我们深表歉意,但我似乎无法通过浏览类似的问题找到任何对我有用的解决方案。
我正在尝试为我的网站设置一个登录页面,我的目标是在用户登录后使用 $_SESSION 变量来存储用户登录凭据。但是,我找不到让 $_SESSION 变量持续存在的方法到其他页面,甚至在网页刷新时停留。
应当指出的是:
每当我尝试调用 session_start() 时,它总是返回 false。我在我的 php 代码的最开始调用它,在它之前没有任何空格。
每当我调用 session_status 时,它总是返回 1。无论在 php 代码中的何处调用它,都会发生这种情况。
每当我调用 session_id 时,它总是返回 null。同样,无论在 php 代码中的何处调用它,都会发生这种情况。
该代码正在 SiteGround 的网络托管服务上运行。我没有在本地测试它,因为我对 php 比较陌生,而且我对如何在本地托管 php 文件不太有信心。
我已经对此进行了测试;我的 Windows PC 使用 chrome,我的 iPhone 使用 Safari。两者都有相同的问题。
任何帮助或建议都将不胜感激,因为在过去的几天里,这些看起来相当微不足道的事情让我发疯了。
编辑
以下代码是我用来测试问题的代码。
<?php
if (session_start())
{
echo '<script>console.log("YES"); </script>';
} else {
echo '<script>console.log("NO"); </script>';
}
$_SESSION["test"] = "YEET";
echo '<script>console.log("'.$_SESSION["test"].'"); </script>'; // prints YEET
?>
<?php
session_start();
if (isset($_SESSION['test']))
{
echo '<script>console.log("'.$_SESSION["test"].'"); </script>';
} else {
echo '<script>console.log("NEET"); </script>';
}
?>
解决方案
更新:我找到了解决方案。
即使 SiteGround(我的主机)已将 session.save_path 设置为 /tmp,我仍然必须使用此文件路径编写自定义 php.ini 文件。这已经解决了这个问题,并且一旦我将 php.ini 文件设置为同时显示错误和启动错误,就清楚地表明 session.save_path 是问题所在。
推荐阅读
- swift - SwiftUI - 尝试制作可编码的枚举但出现错误:“无法推断通用参数'S'”
- reactjs - ReactJS - 为不同的 URL(路由路径)提供不同的内容,因此它看起来像一个多页面应用程序
- c# - 将对象分配给对象类型的属性
- r - 无法找到班级主体
- xml - XML XPath 将 YYYMMDD 日期转换为月份名称?
- python-3.x - 比较两个不同 pandas 列中的值
- java - Apache POI:完全从 Word 模板文件中删除图表
- python - 脚本适用于其他人,不适用于我(错误:self.fp = io.open(file, filemode) PermissionError: [Errno 13] Permission denied)
- java - 如何将 Java 日期对象转换为带有时区的 Matlab 日期时间数组
- sql - Hive - 将行与搜索词子字符串合并