移动到我的localhost后无法登录Magento管理页面

时间:2013-10-23 18:12:56

标签: magento admin backend

我只是将我的Magento商店移到我的localhost环境进行测试使用,我也使用Git来维护代码,但是在我将所有文件移动到我的本地环境后,我无法登录我的管理页面,但我仍然可以看到我的前端页面,git,数据库,似乎运作良好。

当我输入错误的管理员/密码到我的管理页面时,它仍然给我“密码无效”。 但是当我输入正确的页面时,它只是刷新页面并停留在登录页面,没有任何反应。

之前有没有人遇到过这个问题?有什么想法吗?

提前致谢!

8 个答案:

答案 0 :(得分:5)

虽然这个问题已经很久了,但是在我做了一件额外的事情之前,所有上述答案对我都不起作用。

按照已发布的非常有用的答案(摘要):

  1. 将您的base_url更改为http://127.0.0.1/,以获得安全和不安全的路径。
  2. 删除var / session和var / cache中的文件
  3. 相应地更改您的Varien.php文件 - 取决于您的Magento版本。
  4. 然后:

    1. 最后,使用http://127.0.0.1/your/site/folder/name/index.php/admin
    2. 缺少 index.php / admin(而非使用http://127.0.0.1/site/admin)。

      我希望这有助于其他人。

答案 1 :(得分:2)

最近开始使用Magento进行项目并遇到了这个问题。我对网上建议至少有十个或更多不同的变通办法这一事实感到沮丧,并且需要一堆反复试验来找到一个完成工作的人。似乎有些解决方法适用于某些版本而不适用于其他版本。没有人解释为什么或如何发生问题,最流行的解决方案涉及黑客攻击代码库或使用不同的网址,这是不必要的。

我在Community Edition 1.9.1.1中找到的最干净的解决方案是在数据库中编辑两个配置值:

update core_config_data set value = NULL where path = "web/cookie/cookie_path";
update core_config_data set value = 0 where path = "web/cookie/cookie_httponly";

默认情况下,cookie路径在全新安装时实际为NULL,但必须为NULL或空字符串。

出现这种情况是因为某些浏览器(包括Chrome)在使用 localhost 域创建Cookie时出现问题,这意味着当Magento调用session_start()时,会话标识符cookie永远不会被创建,因此信息不会从页面传递到页面。登录过程实际上是成功的,但下一个请求不知道它,因此您被重定向回登录屏幕的原因。没有错误,因为Magento没有考虑这种边缘情况作为可能性。

如果在localhost上创建cookie时没有提供域值,那么浏览器没有问题。不幸的是,仅将 web / cookie / cookie_path 设置为NULL是不够的,因为Magento的配置类将其解析为空字符串,这足以在以后的代码中设置真实域:

if (isset($cookieParams['domain'])) {
    $cookieParams['domain'] = $cookie->getDomain();
}

此方法最终使用当前的HTTP主机来解析cookie的真实域,因此浏览器不需要它。但是,如果我们禁用 web / cookie / cookie_httponly ,那么Magento将不执行此额外步骤, $ cookieParams ['domain'] 未设置且没有域作为会话参数传递,从而允许创建会话cookie,并按照应有的方式运行。

请注意,每次修改数据库配置时,都必须删除/ var / cache /的内容才能反映更改。

如果像我这样你不想要注释掉代码,甚至不需要进行配置更改,那么我创建了一个扩展,它覆盖了上面显示的 getDomain()方法,如果我们返回null在本地主机上,这应该是更具未来证据,并且不会导致附带损害。

http://www.mediafire.com/download/q39p4k95s5tlght/LocalCookie.zip

答案 2 :(得分:1)

尝试删除缓存文件夹/ var / cache的内容。清除浏览器Cookie并尝试。此外,如果您已从服务器复制数据库,则可能需要手动更改core_config_data表中的基本URL(安全和非安全)以及cookie域。如果需要,请手动执行此操作。例如生产值为http://www.mywebsite.com/的web / unsecure / base_url变为“http:// localhost /”

当我有这个时,因为这个或缓存。确保在git hub中忽略缓存文件夹(如果它尚未存在)。

答案 3 :(得分:0)

1.您需要删除缓存

rm -rf var/cache/* var/session/*

2.更改域名core_config_data

update core_config_data set value="http://127.0.0.1/" where path="web/unsecure/base_url";
update core_config_data set value="http://127.0.0.1/" where path="web/secure/base_url";

答案 4 :(得分:0)

执行以下步骤:
1:通过: xampp \ htdocs \ magento \ app \ code \ core \ Mage \ Core \ Model \ Session \ Abstract **
2:打开** Varien.php
文件
3: 87到104 发表评论行号,保存并尝试登录...

答案 5 :(得分:0)

有同样的问题,但修复程序正在改变数据库值:

UPDATE `core_config_data` SET `value` = 'http://127.0.0.1/example/' WHERE `path` = 'web/unsecure/base_url';
UPDATE `core_config_data` SET `value` = 'http://127.0.0.1/example/' WHERE `path` = 'web/secure/base_url';

然后在浏览器http://127.0.0.1/example/admin

答案 6 :(得分:0)

同样的问题!我在core_config_data表中删除/替换静态域后修复了我的问题

网/安全/ BASE_URL

网/安全/ base_link_url

网/安全/ base_skin_url

网/安全/ base_media_url

答案 7 :(得分:0)

对我来说,在IIS上运行它(我知道,不受官方支持):

虽然其他建议有用但我发现最好的解决方案是为我输入一个新的A记录,如

  

127.0.0.1 local.example.com

然后在IIS中添加绑定

  

local.example.com

到我的网站,效果很好。

我发现实际尝试登录客户帐户时出现的错误超过了管理员,但相信它仍适用。