我正在使用 AWS 和 Ubuntu LAMP 堆栈。我通常只是在Mac上使用MAMP来测试内容并使用GoDaddy等托管托管服务,所以这是我第一次使用AWS。我的老开发人员为我设置了 AWS,因此从那时起我就接管了这项工作。
我的代码在 MAMP 上运行良好,尽管无法在 AWS 上运行。
当用户尝试登录时,我会调用用 PHP 编写的 RESTful API 来验证登录并在成功时设置会话变量。然后我刷新页面并检查会话是否已设置,如果已设置,我将加载不同的 php 文件。
这是我的整个index.php
文件:
session_start();
if ($_SESSION['user_login_status'] == 1) {
include("app.php");
} else {
include("login.php");
}
在刷新过程中,似乎我的会话变量被销毁/重置。我尝试在 if
语句之前echo
会话值,尽管它始终为空。
我已经确定的事情:
- 我在 php 文件的最顶部设置
session_start()
,所以这不可能是问题。 - 我通过SSH连接以访问
php.ini
文件并检查了
session.gc_maxlifetime
1440
它适用于 MAMP 而不是我的 AWS 服务器似乎很奇怪。
我或多或少遇到了同样的问题。是服务器中安装的PHP版本造成了错误。要解决它,就这样做
session_start();
if ($_SESSION['user_login_status'] !== 1) {
include("login.php");
} else {
include("app.php");
}
或
session_start();
if ($_SESSION['user_login_status'] != 1) {
include("login.php);
} else {
include("app.php");
}
或
session_start();
if ($_SESSION['user_login_status'] === 1) {
include("app.php");
} else {
include("login.php);
}