我有一个旧的票务系统(10年以上的PHP代码)。在回复时,突然出现了504错误。
问题是,消息和/或附件是在票证中发布的,但由于某种原因,当系统尝试重新加载票证以显示答复时,它会得到504。
检查日志并获取:
2017/10/26 21:05:15 [error] 4220#0: *135 FastCGI sent in stderr: "PHP message: PHP Notice: Undefined variable: nosession in /xxx/init.php on line 189
PHP message: PHP Notice: Undefined index: login_email in /xxx/init.php on line 212
PHP message: PHP Notice: Undefined index: user in /xxx/init.php on line 212
...
第212和213行:
$id=$_POST['login_email'] ? $_POST['login_email']:$_SESSION['user']['id'];
$pass=$_POST['login_ticket'] ? $_POST['login_ticket']:$_SESSION['user']['pass'];
另一行错误:
if (isset($_SESSION['user']['warn'])) { $warn = $_SESSION['user']['warn']; unset($_SESSION['user']['warn']); }
我认为会话管理在某种程度上受到了影响(未定义的变量nosession):
if (!$nosession) {
session_start();
}
(无法在脚本文件中找到它)
然后当程序想要从会话中获取一些数据时,它会一直循环,直到达到超时。
不知道如何验证这一点,任何想法?
PHP:5.6.30,nginx 1.6
谢谢!
编辑:
var_dump(_SESSION)
array(2) { ["user"]=> array(3) { ["id"]=> string(5) "someuser" ["pass"]=> string(32) "xxx" ["type"]=> string(5) "admin" } ["view"]=> array(6) { ["status"]=> string(4) "open" ["sort"]=> string(9) "timestamp" ["way"]=> string(3) "ASC" ["orderby"]=> string(21) "tickets.timestamp ASC" ["per"]=> string(2) "50" ["p"]=> int(1) } }
答案 0 :(得分:0)
这是更新包的问题。不知道哪个是罪魁祸首,但不得不恢复到网站的旧图像并更新数据库以使其正常工作。