php - PHP 脚本可在一个站点上运行,但不能在同一台服务器上运行
问题描述
我目前有一个 cPanel 服务器,我有一个域 site1.com,我们使用 cPanel 在服务器上创建了新网站。问题是我们用于创建站点的脚本在同一 cPanel 服务器上的测试站点“site2.com”上运行,但不在新站点 site1.com 上运行
如果已将问题缩小到 EditPage.php 中的第 18 行:
header("Location: Login.php?Page=$PageToEdit");
我可以在服务器上看到的唯一区别是“site1.com”在 cPanel 中运行“PHP7.4 PHP-FPM”而“site2.com”“PHP7.4”没有办法打开“PHP-FPM” " 在 cPanel 中打开或关闭,那么是什么决定为某些站点打开它而不为其他站点打开它?为什么甚至需要它是没有意义的。我是新手所以请具体谢谢!
SERVER:
cPanel Version 98.0 (build 6) -
Apache Version 2.4.48 -
PHP Version 7.4.22 -
MySQL Version 10.3.31-MariaDB - Architecture x86_64 -
Operating System linux -
Kernel Version 3.10.0-1062.1.1.el7.x86_64
失败的 PHP 脚本:
// (A) START SESSION
session_start();
// (B) LOGOUT REQUEST
if (isset($_POST['logout'])) { unset($_SESSION['user']); }
// (C) REDIRECT TO LOGIN PAGE IF NOT LOGGED IN
if (!isset($_SESSION['user'])) {
header("Location: Login.php?Page=$PageToEdit");
die();
}
解决方案
这是因为会话没有破坏。我们可以使用这些函数取消设置会话。
session_destroy();
$_SESSION = [];
现在它将起作用。你的代码应该是这样的
// (A) START SESSION
session_start();
// (B) LOGOUT REQUEST
if (isset($_POST['logout'])) { unset($_SESSION['user']);
session_destroy(); $_SESSION = []; }
// (C) REDIRECT TO LOGIN PAGE IF NOT LOGGED IN
if (!isset($_SESSION['user'])) {
header("Location: Login.php?Page=".$PageToEdit);
die();
}
推荐阅读
- php - 使用 PHP 和 MySqli 将索引数组插入数据库
- ios - 当我从 main.m 更改为 appdegelegate.swift 时,React-native IOS 应用程序在启动时变为空白
- php - 使用子值上的动态键对多维数组进行排序 - PHP
- c++ - 如何在 curl 中获取 curl/curl.h?
- java - 从 tika-app 调用 ctakes 解析器时出现异常
- scala - 如何在 O(n) 时间内使用不可变集合同时保留匹配和不匹配的部分
- macos - 在 MacOS 上的另一个屏幕上打开弹出菜单
- c++ - istringstream 和读取浮点数的 C++ 问题
- git - 取消设置/忘记/替换用户 git Credential.Helper 并记住新用户
- javascript - 无法通过 Javascript 从 JSON 中获取值