繁体   English   中英

移动服务器后,Wordpress 管理员登录 cookie 阻止错误

[英]Wordpress admin login cookies blocked error after moving servers

背景:在 olddomain.com 上有一个可用的 Wordpress 3.7 站点。

我成功地将它移动到 newdomain.com,并在此过程中将其添加到 wp-config:

define('WP_HOME','http://newdomain.com');
define('WP_SITEURL','http://newdomain.com');

现在,当我尝试从 newdomain.com/wp-admin 登录时,出现跨浏览器错误(尽管启用了 cookie 并清除了现有 cookie):

ERROR: Cookies are blocked or not supported by // your browser. 
You must enable cookies to use WordPress.

我尝试进入 wp-login.php 并注释掉以下几行 (744-747) 以停止条件 testcookie 检查

    // If cookies are disabled we can't log in even with a valid user+pass
if ( isset($_POST['testcookie']) && empty($_COOKIE[TEST_COOKIE]) )
    $user = new WP_Error('test_cookie', __("<strong>ERROR</strong>: Cookies are blocked or not supported by // your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress."));
else
    $user = wp_signon('', $secure_cookie);

但这样做让我陷入重定向循环回到管理页面:

http://myapp.com/wp-login.php?redirect_to=http%3A%2F%2Fmyapp.com%2Fwp-admin%2F&reauth=1

我是否需要更改(或不设置)站点 URL? 或者是否有另一种可能的方法来解决这个问题? 谢谢

添加到 wp-config.php

define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', ''); 

原始来源http://wordpress.org/support/topic/cookie-error-site-not-letting-me-log-in

迁移了数百个 WP 站点后,这里有一些想法:

如果迁移数据库:检查数据库选项表(可能是 wp_options)列“option_name”,值“siteurl”和“home”对您的站点具有正确的“option_value”。 “siteurl”是巨大的。

我可以证明选项表调整是将数据库迁移到 WP 中的新域所需的最低限度。 (不会导致重定向,仍然会有问题)

WP 查找这些数据库选项以将站点序列化为域,我很确定定义在堆栈中较低并且没有帮助。 将 wp-admin 活动视为与前端松散耦合。 您可以在前面破坏所有内容(完成),管理员仍然可以正常工作。

另外 - 该站点是否/是否使用通用安装/无迁移或调整?

如前所述 - .htaccess(丢失或配置错误)会导致您的错误。 关于 .htaccess 文件,如果使用,这是一个 dot.file 并且许多操作系统将“忽略”或“使不可见”,因此复制/粘贴或 FTP 应用程序或类似的可能不会携带 .htaccess

(对此非常确定)如果您移动了数据库并使用了漂亮的 url,并且错过了 .htaccess,这可能是您需要修复的全部内容。 我刚刚在沙盒安装上进行了本地测试,并且表 wp_option 列“option_name”值“permalink_structure”在列 option_value 中留空时将返回到 ?p=1 (非永久链接)状态,并且 .htaccess 将大部分被绕过。

这对我有用。

  1. 删除//define('COOKIE_DOMAIN', 'www.domain.com'); 在你的 wp-config.php
  2. 确保所有文件都是 ANSI 格式而不是 utf-8

如果您更新数据库表上的所有选项(通常是wp_options ),但忘记更改wp-config.php上的DOMAIN_CURRENT_SITE行,则在将多站点安装移动到新域时也会发生此错误:

define( 'DOMAIN_CURRENT_SITE', 'yourdomain.com' );

由于我的缓存插件,我遇到了这种情况。

W3 Total Cache 已将以下内容添加到我的 wp-config.php 文件中:

define('COOKIE_DOMAIN', 'www.olddomain.com'); // Added by W3 Total Cache

由于它是硬编码的,它没有更新到新的站点域。 删除添加的代码后(因为我目前没有使用该插件),我能够再次登录。

我会检查 wp-config.php 中的“cookie”这个词,看看插件是否可能添加了这样的东西。

我遇到了同样的错误。

我在 wp-config.php 中为一个全新的网站硬编码了 Home 和 SiteURL - 甚至没有安装插件。

问题:我在 URL 末尾有一个空格。

define('WP_HOME','http://100.000.000.01/~acctname/wp ');
define('WP_SITEURL','http://100.000.000.01/~acctname/wp ');

删除空间修复了这个错误。

define('WP_HOME','http://100.000.000.01/~acctname/wp');
define('WP_SITEURL','http://100.000.000.01/~acctname/wp');

这个错误在过去几天让我发疯,所以我想在修复它之后与你们分享! 问题是当我试图登录我的 wordpress 后端时,我遇到了这个烦人的 cookie 错误,所以我就是这样修复它的!

  1. 转到您的 ftp 和您的域。
  2. 然后去你的wp-contents
  3. 转到您的主题文件夹
  4. 选择活跃的主题
  5. 查找您的teem的functions.php并打开它
  6. 在代码的末尾,您应该看到结束标记 p> 只需将其删除并清除空格并保存即可!
  7. 转到您的 domain.com/wp-login.php
  8. 并尝试登录它应该在之后修复您可以将标签放回原处并再次保存它对我来说是解决方案这个技巧还修复了wordpress中的白页问题

干杯!

我已经用谷歌搜索并尝试了所有方法来摆脱这个 cookie 问题。 最后我找到了两个解决方案,可以帮助你。

解决方案1:

yoursite/wp-login.php

评论以下第 770-773 行

代码

if ( isset($_POST['testcookie']) && empty($_COOKIE[TEST_COOKIE]) )
    $user = new WP_Error('test_cookie', __("<strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress."));
else
    $user = wp_signon('', $secure_cookie);

它可能适用于某些网站,而某些网站可能会显示空白页面。 此外,不建议这样做,因为此文件可能会在 wordpress 更新后被覆盖,因此请尝试第二种解决方案。

解决方案2:

yoursite/wp-content/themes/yourthemeFolder/functions.php

放置以下代码。

 setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN);
if ( SITECOOKIEPATH != COOKIEPATH )
    setcookie(TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN);

更新您的主题也可能会丢失这些更改,因此请将此代码放在另一个 functions.php 中,该文件位于您当前活动主题的 child-theme 文件夹下。 希望,这会帮助你。

假设您在 Unix/Linux 类型平台上运行 - 请确保您已从原始服务器复制 .htaccess 文件并更新该文件中对旧域的所有引用。 它将位于您的 wordpress 部署的根目录中(如果您正在使用它)。

或者您可能在数据库中的 wp_options 表中的某处引用了旧域。

请注意,当您从一个域转移到另一个域时,帖子中的图像和媒体位置可能需要更新。 您可以直接在数据库中自己执行此操作,使用查找/替换实用程序或手动重新指向帖子中的图像。 修复帖子数据的另一种方法是从旧站点(从管理面板内)导出所有帖子 - 工具 > 导出 > 所有帖子; 然后在导入到新站点之前手动更新该结果文件中的 URL。

所有这些以及更多内容都在codex.wordpress.org 中进行介绍 有关更多信息,请参阅此链接:

http://codex.wordpress.org/Changing_The_Site_URL

重要说明:

  1. 如果您要直接在数据库中修改任何内容,请务必阅读有关 GUID 的部分

  2. 如果您使用的是Better WP Security您可能还需要做其他事情,但根据您的描述,我怀疑您是否安装了它。

我在非常相似的情况和规格下遇到了同样的问题。

最终,在尝试了网上建议的各种不同解决方案后,我只是通过 FTP 重命名了我的活动主题,然后能够登录到仪表板,我将主题重新命名,一切正常,我不知道为什么,但它可能有助于某人修复他们遇到的问题。

我遇到了同样的问题,但没有任何效果。 将我的 php 5.3.x 升级到 5.4.x 后,它工作正常。

以下步骤解决了我的问题

在 wp-config.php 上

//define('WP_CACHE', true); // Added by W3 Total Cache Block this line
//define("COOKIE_DOMAIN", "www.domain.com"); Block this line

从 wp-content 中删除以下文件

object-cache.php 
advanced-cache.php
db.php

很久以前,当您需要一个用于域映射的插件时,我创建了我的 Multisite 安装。 所以我有文件'/wp-content/sunrise.php'并在 wp-config 中define( 'SUNRISE', 'on' ); 它一直工作得很好,直到最近对 WordPress 进行更新。

我在 debug.log 中查看了这些错误:

Undefined index: HTTP_HOST in ../public_html/wp-content/sunrise.php on line 10
Undefined index: HTTP_HOST in ../public_html/wp-includes/ms-settings.php on line 57

所以我删除了sunrise文件和wp-configsunrise定义,并在wp-config文件中添加了@max4ever/@duck_boy的cookie定义:

define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', ''); 

那解决了问题。 我现在可以登录了!! 注意:我尝试了这个定义并且它也有效。 取自多站点设置指南

define( 'COOKIE_DOMAIN', $_SERVER[ 'HTTP_HOST' ] );

尝试在本地主机上安装 wordpress 站点时遇到此错误。 问题是 .htaccess 中的这一行

标题编辑 Set-Cookie ^(.*)$ $1;HttpOnly;Secure

如果不在 https 上,它会阻止设置 cookie。 只好拆线了。

我找到了这个问题的很好的解决方案

此错误有以下可能的解决方案

  1. 编码错误
  2. 代码中不必要的空格
  3. 缓存和安全插件

检查这篇文章: https : //www.scratchcode.io/cookies-are-blocked-or-not-supported-by-your-browser/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM