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

时间:2014-01-06 00:59:26

标签: php wordpress cookies

背景:在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

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

15 个答案:

答案 0 :(得分:34)

添加到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

答案 1 :(得分:23)

迁移了数百个WP网站后,有几点想法:

如果要迁移数据库:请检查数据库选项表(可能是wp_options)列“option_name”,其值“siteurl”和“home”为您的站点指定了正确的“option_value”。 “siteurl”很大。

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

WP查找这些数据库选项以将站点序列化到域,我非常确定堆栈中的定义较低并且没有任何帮助。将wp-admin活动视为与前端松散耦合。你可以在前面打破一切(完成它),管理员仍然可以运作。

此外 - 该网站是否/使用通用安装/没有迁移或调整?

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

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

答案 2 :(得分:5)

这对我有用。

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

答案 3 :(得分:4)

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

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

答案 4 :(得分:3)

由于我的缓存插件,我经历过这种情况。

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

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

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

我会检查wp-config.php中的“cookie”一词,看看插件是否添加了这样的内容。

答案 5 :(得分:3)

我收到同样的错误。

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

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

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');

答案 6 :(得分:3)

这个错误让我在最近几天疯狂,所以我想在修好它与你们分享之后!问题是,当我试图登录我的wordpress后端时,我得到了这个烦人的cookie错误,所以这就是我修复它的方法!

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

答案 7 :(得分:2)

我一直用Google搜索&amp;尝试各种方法摆脱这个cookie问题。最后,我找到了两个可以帮助你的解决方案。

解决方案1:

yoursite /可湿性粉剂的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 /可湿性粉剂内容/主题/ 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中,该文件位于当前活动主题的子主题文件夹下。希望对你有帮助。

答案 8 :(得分:1)

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

或者您可以在数据库的wp_options表中的某个位置引用旧域。

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

codex.wordpress.org 涵盖了所有这些以及更多内容。有关更多信息,请参阅此链接:

http://codex.wordpress.org/Changing_The_Site_URL

重要说明:

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

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

答案 9 :(得分:1)

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

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

答案 10 :(得分:1)

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

答案 11 :(得分:0)

以下步骤解决我的问题

on 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

答案 12 :(得分:0)

我很久以前在需要域映射插件时创建了我的多站点安装。所以我有文件'/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

所以我删除了日出文件和wp-config日出定义,并将@ max4ever / @ duck_boy的cookie定义添加到wp-config文件中:

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

解决了这个问题。我现在可以登录!!注意:我尝试了这个定义,它也运行良好。取自Multisite Setup Guide

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

答案 13 :(得分:0)

当我尝试在localhost上安装wordpress网站时遇到此错误。问题是.htaccess中的这一行

  

标题编辑Set-Cookie ^(。*)$ $ 1; HttpOnly;安全

如果未在https上设置cookie,它将阻止设置cookie。只需删除该行即可。

答案 14 :(得分:0)

我已经找到了很好的解决方案

对于此错误,可能有以下解决方案

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

查看本文:https://www.scratchcode.io/cookies-are-blocked-or-not-supported-by-your-browser/