phpmyadmin 未能设置会话 cookie。也许您使用的是 HTTP 而不是 HTTPS

Posted

技术标签:

【中文标题】phpmyadmin 未能设置会话 cookie。也许您使用的是 HTTP 而不是 HTTPS【英文标题】:phpmyadmin Failed to set session cookie. Maybe you are using HTTP instead of HTTPS 【发布时间】:2018-09-23 12:10:08 【问题描述】:

我安装了 php、Apache 和 mysql,并且工作正常。 当我安装完 Phpmyadmin 后,打开它有一个错误。

Failed to set session cookie. Maybe you are using HTTP instead of HTTPS.

我不知道为什么。 我该如何解决这个问题?

【问题讨论】:

如果您提供更多关于您已经尝试过的内容的详细信息,将会很有帮助。这是在本地盒子上还是在生产中?您是否查找过有关配置 PHPMyAdmin 的信息?等等。 区域是 Chrome 扩展。如果您不想更改任何内容,请在其他浏览器(如 Safari 或 Mozila)中打开 url,它可以正常工作。 【参考方案1】:

我不知道为什么,但就我而言,我只是从任务管理器中重新启动了“Apache24”服务,之后我就可以成功登录了。

【讨论】:

【参考方案2】:

这可能是因为任何活动的 chrome 扩展。

【讨论】:

【参考方案3】:

如果您使用名为“tampermonkey”的扩展程序,只需禁用它,重新加载并再次尝试登录。

【讨论】:

【参考方案4】:

奇怪的是,当使用 Docker 并且在容器配置中未正确指定数据库主机名时会导致此错误,例如,当实际数据库主机名与 phpMyAdmin 的默认值不匹配时。

声明Maybe you are using HTTP instead of HTTPS. 的消息部分是“红鲱鱼”,因为在这种特定情况下切换到 HTTPS 并不能解决问题。

对于这种特定情况,在docker-compose.yml 中,必须适当设置PMA_HOST 环境变量,例如:

services:
    phpmyadmin:
        environment:
          - PMA_HOST=mysql

一个更完整的例子,它在 Laravel Sail(这是一个特定的 Docker 容器堆栈实现)中可以正常工作,但只有在进行此更改后,如下:

services:
    phpmyadmin:
        image: phpmyadmin
        restart: always
        ports:
          - 8080:80
        environment:
          - PMA_HOST=mysql
        networks:
          - sail

现在,在http://localhost:8080可以成功访问phpMyAdmin(注意缺少HTTPS),不再出现错误。

【讨论】:

【参考方案5】:

我遇到了这个问题,因为我使用 Docker Compose 在 nginx 反向代理后面托管 phpmyadmin。在我的docker-compose.yml 文件中:

db-admin:
    # https://hub.docker.com/r/phpmyadmin/phpmyadmin/
    image: phpmyadmin/phpmyadmin:latest
    restart: always
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=http://db
      - PMA_PORT=3306
      - PMA_ABSOLUTE_URI=http://localhost/db-admin/  # necessary because the db-admin is hosted behind a reverse proxy.
    ports:
      - 8084:80
    depends_on:
      - db
    networks:
      - shared-network

由于反向代理和 PMA_ABSOLUTE_URI,我只能在 http://localhost/db-admin 上使用此应用程序,而不能在 http://localhost:8084 上使用。

【讨论】:

【参考方案6】:

我在 phpMyAdmin-4.9.1 上遇到了这个问题。我只是将配置文件从config.sample.inc.php 重命名为config.inc.php

【讨论】:

【参考方案7】:

我找到了这个错误的一个原因

参考:https://github.com/phpmyadmin/phpmyadmin/issues/15634#issuecomment-571713024

如果您的浏览器具有安全 cookie,并且您正在浏览非安全连接,则非安全连接将发送一个新的非安全 cookie。 并且浏览器将拒绝覆盖安全的。 导致无限循环。

“设置会话 cookie 失败。可能您使用的是 HTTP 而不是 HTTPS 来访问 phpMyAdmin。”

我也尝试了“Privacy Badger”,但无法重现该问题。

【讨论】:

【参考方案8】:

应该使用 phpMyAdmin 4.9.2 解决该问题,因为我已对其进行了修复,但如果您仍有问题,请在 https://github.com/phpmyadmin/phpmyadmin/issues/15634 发表评论

威廉, phpMyAdmin 团队

【讨论】:

【参考方案9】:

在网上搜索此问题的解决方案后,我发现在我的情况下,特定的 chrome 扩展程序导致了登录问题。 所以我建议禁用你的扩展。

在我的例子中,导致问题的 chrome 扩展名为:Safe Torrent Scanner

【讨论】:

呃......那些种子......但你是对的,我有同样的问题。我已禁用安全种子扫描程序,它开始工作。干杯! 是的,这是我的问题。谢谢!! :D 完美!安全的 torent Scanner 出来了! 我已经这样做了,它似乎有效。但后来,即使删除了扩展,我也无法打开 phpmyadmin 如果你是对的。就我而言,Lingvanex 扩展会导致此问题。这怎么可能?非常感谢。【参考方案10】:

今天刚刚在 Chrome 上遇到了这个问题,以下对我有用,所以我想我会分享它。

导航到 Inspector > Application > Clear Storage > 继续并清除所有内容。

【讨论】:

【参考方案11】:

我今天遇到了这个问题,以下是我在 Chrome 上修复它的步骤:

1- 右键单击​​页面任意位置,选择“检查”或按 F12 打开开发者工具。

2- 从顶部菜单中选择“应用程序”。

3- 点击左侧菜单中的 Cookies。

4- 您会在那里找到一些 cookie,单击每个,然后单击顶部的“X”将其删除。全部删除后,刷新页面。

【讨论】:

【参考方案12】:

我的解决方案是禁用(为我的域添加例外)到“Privacy Badger”Firefox 扩展。

只要我这样做,我就可以登录了。

这篇文章中的其他解决方案(config.ini.php、浏览器缓存、***)对我没有任何帮助。似乎这个问题主要与环境/浏览器配置有关,这对每个人来说都是独一无二的。

我认为这不是 PHPMyAdmin 的问题。

【讨论】:

【参考方案13】:

我刚刚在我经常使用的网站上使用 Firefox 61 遇到了这个问题,所以我知道我的配置设置是正确的。事实上,我可以使用私人模式进入。因此,在非私有模式下,使用 Firefox 开发者工具,我清除了所有会话 cookie 和 VOILA。完美运行。

【讨论】:

【参考方案14】:

我遇到了同样的问题,一个快速的解决方法是使用隐身模式

【讨论】:

我也一样,用 Chrome 这对我也有用,在 Firefox 中。现在我可以弄清楚如何让它再次工作而无需变通。 Chrome 89 有这个 bug,只有隐身窗口修复了它(清除存储没有)。使用 Firefox 83 和 Safari 14 都没有问题。 经过多年的痛苦,唯一真正有效的“黑客”......【参考方案15】:

我遇到了同样的问题,但就我而言,问题出在我的 *** 上,所以我禁用了它。

如果您使用的是 ***,则需要禁用它 或者只是禁用你的cookie阻止。

【讨论】:

【参考方案16】:

只需清除浏览器中的 cookie 和缓存即可。这就是它对我有用的方式。

【讨论】:

【参考方案17】:

我过去曾遇到过此问题,但是使用此答案中提供的说明成功解决了该问题。 (使用 phpMyAdmin 版本 4.8.0.1)

导航到

config.inc.php

在您的服务器文件中并检查以下部分:

/* Authentication type and info */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'username';
$cfg['Servers'][$i]['password'] = 'password';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = true;

如果尚未执行,注释掉用户和密码行并确保 auth_type 设置为 cookie

根据我的经验,在继续之前,phpMyAdmin 需要执行此操作才能使用 cookie 身份验证。

接下来执行以下步骤来解决会话 cookie 无法使用 HTTP:

    输入您的浏览器设置(例如,对于 Google Chrome,请转到 chrome://settings/) 尝试查找设置以清除 cookie、缓存数据、图像和文件、历史记录等。 成功找到后,清除浏览器的浏览历史记录、下载历史记录、缓存的图像和文件以及内容设置。 清除 phpMyAdmin 登录页面的 cookie。 注意: 在 Internet Explorer 中,查看和删除 cookie 有点困难。如果您需要帮助,请参阅from Ask Leo 的互联网文章,了解如何在 IE 中查看 cookie。

我收到了执行上述说明的想法,因为我在this GitHub issue 看到有人提到私人模式。这是来自 nik6018 的评论:

如 #14234 中所述,通过 HTTP 登录在私有模式下有效,但在正常会话中无效。 我试图清除域的 cookie,但仍然是同样的问题。

私人模式让我想起了我在遥远的过去遇到过这样的问题,我记得必须清除各种浏览器项目。 考虑到我对遥远过去的提醒,我以与我介绍它们不同的顺序或方式尝试了上述说明,并且成功了。

【讨论】:

【参考方案18】:

您似乎不是第一个遇到这种情况的人;在你面前还有一个:https://github.com/phpmyadmin/phpmyadmin/issues/14184

我个人在必须按下按钮才能再次登录时遇到了麻烦,但它对我有用。打开那个bug的人完全无法登录。

所以基本上它目前是一个开放且已知的错误,希望它会在下一个 phpMyAdmin 版本中得到修复。

【讨论】:

5.1.1 问题依然存在。【参考方案19】:

嗯,这是两件事之一。要么你没有在你的生产机器上启用 TLS/HTTPS(你绝对应该这样做!- 入门的好资源是 Let's Encrypt 和你正在使用的任何主机)或者 您可能正在尝试以生产模式访问开发服务器。在后一种情况下,虽然我自己对 PHPMyAdmin 并不熟悉,但我猜想某处有一个配置文件指示它何时应该像生产服务器而不是本地服务器一样运行,您可以切换它。但是绝对不要将您的生产服务器切换为像开发服务器一样,那么您只是为了方便而放弃了安全性,最终会反过来咬您。

【讨论】:

对我来说正好相反。在我重新配置我的网络服务器以自动重定向以使用 HTTPS 之前,它使用 HTTP 工作得很好。现在我得到这个错误,除非我打开重定向到 HTTPS(并使用私人浏览模式)。

以上是关于phpmyadmin 未能设置会话 cookie。也许您使用的是 HTTP 而不是 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

更改 PhpMyAdmin Cookie 路径

未能在会话中存储 CSRF 令牌!可能会话无法正常工作

18.使用phpmyadmin实现cookie和session

18.使用phpmyadmin实现cookie和session

phpMyAdmin - 会话开始期间出错;

nginx负载均衡搭建phpmyadmin加入redis了解session会话原理