首页 > 解决方案 > 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();
}

标签: phpapachecpanel

解决方案


这是因为会话没有破坏。我们可以使用这些函数取消设置会话。

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();
 }

推荐阅读