【问题标题】:PHP Script works on one site but not other, same serverPHP 脚本可在一个站点上运行,但不能在同一台服务器上运行
【发布时间】:2021-11-05 06:58:16
【问题描述】:

我目前有一个 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();
}

【问题讨论】:

  • 那么究竟是什么不起作用 - 重定向?你检查过错误日志吗?
  • 没有错误只是得​​到白页和这个来源: 在线编辑器就是这样。
  • "no error is throwed just get white page" - è¿™就是为什么你需要去检查日志文件的原因!并确保为网站配置正确的错误报告级别和日志记录。
  • 如果我清空: //header("Location: Login.php?Page=$PageToEdit"); //死();它可以“但是”用户绕过登录。我什至删除了“Login.php”中的所有编码以回显“Hello”;在某处巩固其他错误的可能性。
  • 您应该通过 cpanel 进行这些设置,而不是直接在代码中。还有,我的问题是:你现在检查服务器上的实际错误日志了吗?您不太可能收到 500 é”™误,但在日志中没有任何实际问题的痕迹。

标签: php apache cpanel


【解决方案1】:

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

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

【讨论】:

  • OK 现在至少我们得到一个错误:警告:session_start():当第 13 行的 /domain.com/code/system/library/EditPage.php 中的标头已发送时无法启动会话警告:无法修改标头信息 - 标头已由 /home/domain/public_html/domain.com/code/system/library/EditPage 中的(从 /domain.com/code/system/library/EditPage.php:1 开始的输出)发送。第21行的php
  • 现在你在一个页面或文件中使用了 session_start() 函数两次。
  • 这是我所做的code // (A) 开始会话 //session_start(); // (B) 注销请求 if (isset($_POST['logout'])) { unset($_SESSION['user']); session_destroy(); $_SESSION = []; } // (C) 如果未登录则重定向到登录页面 if (!isset($_SESSION['user'])) { header("Location: Login.php?Page=".$PageToEdit);死(); }
  • GET:警告:无法修改标头信息 - 标头已由 /home//public_html/domain.com/code/system/library/EditPage.php:1 中的 /home 发送/smldesign/public_html/domain.com/code/system/library/EditPage.php 第 21 行
  • 已修复!从 Login.php 中删除了头文件 感谢 Mudassar!
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2016-01-11
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
相关资源
最近更新 更多