PrestaShop - 升级后无法登录后台 (1.7.2.0 -> 1.7.7.4)

时间:2021-06-09 09:04:23

标签: php prestashop prestashop-1.7

根据官方 PrestaShop 开发文档,我已在本地计算机(Xampp、PHP 7.4、MariaDB 10.1.22)上升级了 PrestaShop:https://devdocs.prestashop.com/1.7/basics/keeping-up-to-date/upgrade/

在前台,一切似乎都很好。我面临的问题是我现在无法登录后台。填写正确的电子邮件和密码并单击登录按钮后,它不会显示任何消息,只是重新加载页面。如果我填写了错误的电子邮件或密码,则会出现常见错误“该员工不存在,或提供的密码不正确。”

我也尝试在 Chrome、Opera 或 Firefox 中通过隐身模式登录,但在每种情况下结果都是相同的 - 重新加载登录页面。

表 ps_shop_url 中的 PrestaShop 域没问题。 ps_configuration 中的变量 PS_SHOP_DOMAIN_SSL 和 PS_SHOP_DOMAIN 似乎也可以。我也清除了缓存目录(ps_root/var/cache、ps_root/cache、ps_root/app/cache),但还是没有结果。

请问,有人可以帮忙吗?

非常感谢

编辑:经过一些调试后,我发现了可能导致此问题的原因: 在 AdminControllerCore@init 方法中,第 2804 行有一些员工检查( !$this->context->employee->isLoggedBack() ),该函数检查后台登录员工的有效性。然而,员工 id 为空,似乎 id 不是从 cookie 加载的...但我不知道为什么...

编辑 2: 最后,在 Cookie@update 方法中验证 cookie 校验和存在问题:

        /* Check if cookie has not been modified */
        if (!isset($this->_content['checksum']) || $this->_content['checksum'] != $checksum) {
            $this->logout();
        }

校验和不一样。因此它每次都将我注销......有人知道这种行为是由什么引起的吗?我可以将注销行注释掉并且它可以工作,但我知道这不是正确的解决方案,并且可能存在安全风险...

谢谢!

2 个答案:

答案 0 :(得分:0)

这可能是缓存问题。

在您的服务器上安装 MyShopRepair。 启用调试模式并点击“清除缓存”按钮。

此后,您将可以再次访问您的商店。

答案 1 :(得分:0)

Prestashop 1.7.7 与 PHP 7.4 不兼容。尝试将其降级。

PHP compatibility chart