那么何时/为什么 Chrome 在 localhost 上会失败,但从 127.0.0.1 加载却可以正常?
PHP MySQL IIS Windows 10 运行良好。phpMyAdmin 建议更新。因此,将工作目录重命名为 -old。尝试更新 phpMyAdmin,但它也需要更新 PHP。出现问题(弃用函数),因此返回使用原始目录。搞砸了我无法识别的东西。
哎呀!Chrome 将不再加载 localhost/phpmyadmin/index.php 错误 500:localhost 页面无法正常工作。localhost 目前无法处理此请求。
不!不是服务器错误,因为:
Firefox 50.1.0 可以正确加载 phpMyAdmin 索引页并运行查询
Chrome 55.0.2883.87 m 确实加载http://127.0.0.1/phpmyadmin/index.php正确并运行查询
Chrome 还可以很好地运行我自己的使用 MySQL 的 php 应用程序脚本。
我向 phpMyAdmin 目录授予了所有用户(包括 IIS_IUSRS)的所有权限。但由于从 127.0.0.1 访问 Chrome 可以正常工作,并且从 localhost 访问 Firefox 也可以正常工作,因此我认为这不是文件权限问题。
根据我在其他地方找到的建议,我前往 chrome://flag 并重置为默认值。
我已经清除了从 4 周前到现在的 Chrome 缓存。
我犹豫是否要清除某些 cookie,因为我可能需要保留某些 cookie 以便在其他特定网站上被识别,等等。不确定如何查看和删除仅与 phpMyAdmin 相关的 cookie(如果适用)。
我“认为”我没有对 config.inc.ini 进行任何更改,因为它一直在工作。phpMyAdmin 全部位于 inetpub 的 wwwroot 中。
停止并启动 MySQL 服务。浏览器按 ctrl-shift-R 重新加载。无济于事。我想我可以收藏 127.0.0.1,但我更想了解发生了什么。
那么,是什么变化导致我的 Chrome 现在将 localhost(加载失败)与 127.0.0.1(加载正常)区别对待?
答案1
500 内部服务器错误表示 Chrome做尝试加载页面,甚至得到服务器响应(即 500 错误)。所以,服务器失败了。它可能有一些日志?
由于 cookie 是按(子)域存储的,并且 localhost 和 127.0.0.1 是不同的域,所以我敢打赌 Chrome 有一个用于 localhost 的旧 cookie,它尚未过期,但不知何故不再有效。
即使 PHP 和 phpMyAdmin 向后兼容(因此可以处理升级后的差异),麻烦的 cookie 也可能是在测试新 PHP 和新 phpMyAdmin 时创建的。现在您恢复了升级,PHP 或 myPhpAdmin 无法理解 cookie 或它引用的会话的新格式。
对于会话,浏览器的会话 cookie 保存着服务器上的 ID指“序列化”的 PHP 对象。因此,也许在较新版本的 PHP 中序列化格式已经发生了变化,而旧的 PHP 不知道如何处理较新的格式。
对于其他 cookie,phpMyAdmin 可能已将序列化对象直接存储在 cookie 中或存储在其数据库中,或者只是期望与 cookie 中找到的数据不同的数据。
测试上述内容:
要查看会话 cookie 是否是罪魁祸首:重新启动 Chrome 并重试。
要查看常规 cookie 是否会导致此问题而无需清除它,请执行以下操作:尝试隐身会话,它不会将现有的 cookie 发送到服务器。如果有效:清除本地主机 cookies。
如果这不起作用,那么您需要在服务器的日志中查找 500 错误。