PHP session_start returns false,$_SESSION变量不是持久化的
PHP session_start returns false, $_SESSION variables are not persistent
首先让我说一下,我对 PHP 比较陌生,如果这看起来微不足道,我们深表歉意。另外,如果已经回答了类似的情况,我深表歉意,但我似乎无法通过浏览类似的问题找到适合我的解决方案。
我正在尝试为我的网站设置一个登录页面,我的目标是在用户登录后使用 $_SESSION 变量来存储用户登录凭据。但是,我找不到制作$_SESSION 变量一直存在到其他页面,甚至在网页刷新后仍然存在。
需要注意的是:
每当我尝试调用 session_start() 时,它总是 returns 错误。我在 php 代码的开头调用它,前面没有任何白色 space。
每当我调用 session_status 时,它总是 returns 1。无论在 php 代码中的何处调用,都会发生这种情况。
每当我调用 session_id 时,它总是 returns 为空。同样,无论在 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 是问题所在。
首先让我说一下,我对 PHP 比较陌生,如果这看起来微不足道,我们深表歉意。另外,如果已经回答了类似的情况,我深表歉意,但我似乎无法通过浏览类似的问题找到适合我的解决方案。
我正在尝试为我的网站设置一个登录页面,我的目标是在用户登录后使用 $_SESSION 变量来存储用户登录凭据。但是,我找不到制作$_SESSION 变量一直存在到其他页面,甚至在网页刷新后仍然存在。
需要注意的是:
每当我尝试调用 session_start() 时,它总是 returns 错误。我在 php 代码的开头调用它,前面没有任何白色 space。
每当我调用 session_status 时,它总是 returns 1。无论在 php 代码中的何处调用,都会发生这种情况。
每当我调用 session_id 时,它总是 returns 为空。同样,无论在 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 是问题所在。