Magento 1.9无法登录到管理面板!


99

我已经安装了Magento 1.9。一周运作良好。昨天突然,当我尝试登录到Magento管理面板时,我键入usernamepassword,然后单击“登录”按钮,没有任何反应。页面刷新,仅此而已。没有错误或任何其他消息。

如果输入了错误的用户名或密码,则会显示错误。

在我搜索此问题之后,建议我在以下几行中发表评论:

app \ code \ core \ Mage \ Core \ Model \ Session \ Abstract \ Varien.php

/* to solve login issue */
  /*if (!$cookieParams['httponly']) {
  unset($cookieParams['httponly']);
  if (!$cookieParams['secure']) {
  unset($cookieParams['secure']);
  if (!$cookieParams['domain']) {
  unset($cookieParams['domain']);
  }
  }
  }

if (isset($cookieParams['domain'])) {
  $cookieParams['domain'] = $cookie->getDomain();*/ //I have commented these lines

对于以下一些较旧的版本,在同一文件中推荐了该文件。

$cookieParams = array(           
    'lifetime' => $cookie->getLifetime(),           
    'path'     => $cookie->getPath(),           
    //'domain'   => $cookie->getConfigDomain()           
    //'secure'   => $cookie->isSecure(),           
    //'httponly' => $cookie->getHttponly()       
);
  }*/

即使那样,我也无法登录到管理员。照原样。有人遇到这个问题吗?还有其他解决方案吗?

(我尝试通过ftp清除缓存和会话)。


您能否清除浏览器缓存/ Cookie,然后重试?
alamelu 2014年

将核心文件复制到以app/code/local/Mage/Core..blahblah进行编辑,以便Magento覆盖核心文件。也可以使用git进行版本控制,这真是天赐良机。
克里斯K


1
如果您使用的是Chrome,请按F12>资源> Cookies>右键单击您的域>清除。
rybo111 2015年

Answers:


122

停止那样修改核心代码-可能会暂时解决问题,但可能会导致将来几乎无法追踪的问题。

许多不同的问题会导致您看到无错误的管理员登录行为,但是所有这些问题都可以追溯到Magento,无法设置或读取会话cookie。Magento使用会话在页面之间传递错误消息-这就是为什么您看不到错误消息的原因。Magento还使用会话来存储“已登录”值,因此未设置会话也会导致核心错误行为。

可能的原因包括

  • 本地计算机时间与服务器时间不匹配,导致即时Cookie失效。确保您的服务器时间正确。

  • 对的权限不正确var/session,导致无法保存会话文件

  • 数据库/ redis /其他会话存储的配置不正确,从而导致无法保存会话值

  • 一个模块将实例实例化为早期,从而阻止设置正确的会话名称

  • 您是使用多个URL的开发人员,并且拥有多个Cookie域

  • 另一个开发人员以某种方式进行了修改app\code\core\Mage\Core\Model\Session\Abstract\Varien.php,从而导致难以跟踪的错误

  • 中的Cookie域System -> Configuration -> Web -> Session Cookie Management与实际的站点域不匹配。

  • 您将localhost用作服务器域,并使用了localhost在某些情况下无法设置Cookie的故障/错误的Webkit版本。

短期修复是仅删除域的Cookie。这通常足以解决问题。如果问题仍然存在,请找出上述原因中的哪一个是您导致错误的原因,然后采取措施加以解决(修复权限等)。


7
您可以使用n98-magerun的sys:check命令查找Cookie域和基本URL的问题。magerun.net/quick-tip-find-login-issues-with-syscheck-command
cmuench 2014年

1
@Alan Storm,谢谢您的明确解释。我解决了我的问题。就我而言,问题的原因是第三位。
SIBHI小号

4
就我而言,服务器上没有足够的磁盘空间。因此,您可能要添加此作为可能的原因。
西蒙(Simon)

@cmuench我运行该命令,但我不理解结果:无效的不安全BaseURL存储:默认配置了错误的主机名。主机名必须包含一个点✖无效的不安全BaseURL存储:法文配置了错误的主机名。主机名必须包含一个点✖无效的不安全BaseURL存储:sot_eng错误的主机名配置。主机名必须包含一个点✖无效的不安全BaseURL存储:sot_fra配置了错误的主机名。主机名必须包含一个点✔存储的Cookie域(安全):默认确定-未设置任何域所有Cookie域看起来都相同,并且未设置任何域
Denisa

@Denisa如果您尝试将其作为一个新问题,将会遇到更多的运气。
艾伦·风暴

33

我在某些Magento装置(不仅是1.9)上有相同的症状。就我而言,它仅在Chrome中发生。我通过登录Firefox / Safari / Opera并在“网络”设置的“会话Cookie管理”中将“仅使用HTTP”更改为“否”来解决此问题。

查看带有Cookie设置的Magento的后端屏幕截图


3
这有助于我在Chrome中运行我的开发环境,但是请记住不要在生产环境中使用这些设置,因为它会打开一整类安全漏洞。
Stephen Crosby 2014年

会话Cookie管理部分在哪里?
Aryeh Armon

1
还要检查您的cookie域-我在本地开发,这是我的问题。
Phil Birnie 2015年

对我有很大帮助!不知道这只会在Chrome中发生。哈哈!
jehzlau 2015年

4
设置Use HTTP onlyNo无管理员面板访问权限。您可以直接启动此SQL查询:UPDATE __DATABASE_NAME__core_config_dataSET value= 0的位置core_config_datapath='web / cookie / cookie_httponly';
Nolwennig 2015年

11

我也有这个问题。结果发现var/session,即使目录本身设置为,也无法写入会话0777。Magento创建了会话文件,但是它们都保留为零字节。

files将会话存储从更改为可以db解决我的问题。


这可行!我不明白为什么Magento不编写会话并缓存文件。权限正确!
米开朗基罗

如果我记得我的情况,可能是磁盘已满,或者会话目录中的文件过多。
Giel Berkers

这个对我有用!
Ner

就我而言:将会话存储从数据库更改为文件已解决的问题。
akgola '18

7
  1. 打开您的Magento安装目录。找到并打开index.php文件。
  2. 搜索error_reporting(E_ALL | E_STRICT);码。
  3. 这样注释掉它:

    /*error_reporting(E_ALL | E_STRICT);*/

  4. 并改用以下代码:

    error_reporting(E_ALL);

    $_SERVER['MAGE_IS_DEVELOPER_MODE'] = true;

  5. 通过删除#符号取消注释,因此它看起来像这样:

    ini_set('display_errors', 1);

  6. 保存此文件并上传到服务器。重新加载您的网站页面以查看错误。


6

另一个可能的原因:硬盘/卷/配额已满,因此无法将会话数据写入磁盘。可能似乎不太可能,但是第二次发生在我身上,花了一段时间才弄清楚。

我没有足够的名声来发表评论,但是@Alan Storm,也许您想把它列入您的优秀清单。


6

我最近遇到了同样的问题,简单的技巧对我有用。这也适用于无法访问Google Chrome上的仪表板的人。如果您可以在Mozilla Firefox上工作,那么请这样做,因为我猜这个问题在Mozilla firefox上不是持久的。

因此,铬的解决方案是:

转到系统->配置-> Web。展开不安全和安全选项卡。http://127.0.0.1/[Your folder name]如果使用本地主机,则将基本URL更改为,或者将其更改为用于访问前端的站点URL。我必须登录两次才能进入仪表板,因为当我第一次输入详细信息时,它会刷新并返回到与您提到的循环相同的页面。


5

从主机打开您的phpMyAdmin,请尝试执行此sql命令。

运行此SQL:

SET FOREIGN_KEY_CHECKS=0;
UPDATE core_store SET store_id = 0 WHERE code='admin';
UPDATE core_store_group SET group_id = 0 WHERE name='Default';
UPDATE core_website SET website_id = 0 WHERE code='admin';
UPDATE customer_group SET customer_group_id = 0 WHERE customer_group_code='NOT LOGGED IN';SET FOREIGN_KEY_CHECKS=1;

现在,管理员可以登录了。

请遵循以下步骤:

管理员页面显示404页面未找到


1
不要忘记在匿名窗口或其他浏览器中打开以删除会话
Martin

3

我有同样的问题,我通过删除/ var / session中的所有文件来解决。我认为这是因为Magento中的会话过多!


3

警报风暴列表正确且详细。这是另外一些情况。

  1. 在流浪汉中,还要检查var/session主机上的许可
    (安装问题)
  2. 检查磁盘是否已满或var / session中的文件过多
  3. 运行n98-magerun.phar sys:check(捕获包括Cookie域在内的问题)
  4. 通过编辑local.xml将会话更改为数据库。通过使用insidie,它将排除大多数权限问题<global>

    <session_save><![CDATA[db]]></session_save>

也可以改变第三方扩展(防火墙/安全扩展),例如https://github.com/paimpozhil/MageFirewall/blob/master/app/code/community/MageFirewall/Firewall/Model/Observer.php#L53把你如果尝试次数过多,则将其列入黑名单。

如果您的会话最初无法解决权限问题,但是即使在解决原始问题之后仍然失败,则可能会发生

在您的特定情况下,请注意admin_session_user_login_success事件,因为大多数安全/防火墙模块都使用此事件。如果$_SESSION['admin']观察者重置了变量,请特别留意




2

如果您正在开发localhost并将域名设置或更改为localhost,则将数据库表core_config_data域名更新为127.0.0.1。例如UPDATE core_config_data SET value="http://127.0.0.1/magento/" WHERE path="web/unsecure/base_url";


2

另外,如果上述其他所有操作均无效并且您需要紧急访问,则可以更新数据库中的密码:

UPDATE admin_user SET password=CONCAT(MD5('qXpassword'), ':qX') WHERE username=‘user’;

根据需要替换用户名和密码。




0

不久前,我发生了同样的事情,而我的问题出在会议上。我没有足够的DISK空间来创建会话和从中缓存var/。我删除了一些东西,之后一切正常。也许会帮助某人。

干杯


0

尝试通过清空文件夹“ var / cache”和“ var / session”来清除缓存,这为我解决了。

一次之后,我还必须重新启动Web服务器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.