[英]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 将大部分被绕过。
这对我有用。
//define('COOKIE_DOMAIN', 'www.domain.com');
在你的 wp-config.php如果您更新数据库表上的所有选项(通常是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 错误,所以我就是这样修复它的!
干杯!
我已经用谷歌搜索并尝试了所有方法来摆脱这个 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
重要说明:
如果您要直接在数据库中修改任何内容,请务必阅读有关 GUID 的部分
如果您使用的是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。 只好拆线了。
我找到了这个问题的很好的解决方案
此错误有以下可能的解决方案
检查这篇文章: https : //www.scratchcode.io/cookies-are-blocked-or-not-supported-by-your-browser/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.