2013-09-10 6 views
12

Около недели назад я работал в тестовой среде для нового сайта. Я ушел на час, вернулся, и теперь не могу попасть на страницу администратора, так как в 'http://magento.localhost.com/admin' результат № маршрута 404. Я единственный, у кого есть доступ к этому, он не живет ни в каком смысле. Я использую VBox с Ubuntu для размещения среды. С точки зрения возможных исправлений, до сих пор я пытался ...Magento 404 на странице администратора

  • Удостоверяясь core_store, core_store_group, core_website и customer_group таблица идентификаторов устанавливаются в 0 (как описано в этой и многих других статей - http://www.nude-webdesign.com/fix-for-magento-admin-error-404-page-not-found/)

  • Воспроизведение с помощью метода /app/code/core/Mage/Core/Controller/Varien/Front.php _isAdminFrontNameMatched для отображения AdminPath (это «администратор»)

  • Очищенные папку Var, опустели кэш браузера. Кэширование сайта было отключено.

  • Добавление 'index.php' к URL-прежнему приводит к 404.

  • Согласно Magento Admin 404, файл 'приложение/и т.д./use_cache.ser' не существует для меня.

В день это происходит, я просто играл с некоторыми файлами макета я скопировал в модуль я сделал и медиа-запросы в ТЕМАХ (все из которых были изменены на свое исходное состояние еще до этой проблемы начало происходить).

У кого-нибудь есть предложения относительно того, что здесь не так? Возможны ли другие возможные причины?

Спасибо за все.

EDIT 1:06 pm 9/10/2013: В ответ на метод поиска контроллеров Alan Storm, который ищет Standard.php, мне возвратили многие «отсутствующие» файлы контроллеров. Однако после загрузки новой копии 1.7.0.2, чтобы найти эти файлы, они также не присутствовали в их обоих. Вот мой выход из var_dump предложения Алана в Standard.php:

  • ... "/ public_html/приложение/код/​​ядро ​​/ Mage/Index/Контроллеры/Adminhtml/Controller.php"

  • ... "/ public_html/app/code/core/Mage/Paygate/controllers/Adminhtml/Controller.php"

  • ... "/ public_html/app/code/core/Mage/Paypal/controllers/Adminhtml /Controller.php "

  • ..."/public_html/app/code/core/Mage/Widget/controll ERS/Adminhtml/Controller.php "

  • ... "/ public_html/приложение/код/​​ядро ​​/ Mage/OAuth/Контроллеры/Adminhtml/Controller.php"

  • ..."/public_html/приложение/код/​​ядро ​​/ Mage/Authorizenet/контроллеры/Adminhtml/controller.php»

  • ... "/ public_html/приложение/код/​​ядро ​​/ Mage/Bundle/контроллеры/Adminhtml/controller.php"

  • ..."/public_html/app/code/core/Mage/Centinel/controllers/Adminhtml/Controller.php"

  • ... "/ public_html/приложение/код/​​ядро ​​/ Mage/Compiler/контроллеры/Adminhtml/контроллер. PHP "

  • ... "/ public_html/приложение/код/​​ядро ​​/ Mage/Связь/контроллеры/Adminhtml/controller.php"

  • ..."/public_html/приложение/код/​​ядро ​​/ Mage/Загружаемые/Контроллеры/Adminhtml/Controller.php "

  • ..."/public_html/app/code/core/Mage/ImportExport/контроллеры/Adminhtml/Controller.php "

  • ... "/ public_html/приложение/код/​​ядро ​​/ Mage/API2/контроллеры/Adminhtml/Controller.php"

  • ... "/ public_html/приложение/код/​​ядро ​​/ Mage// контроллеры кэш страниц/Adminhtml/controller.php "

  • ... "/ public_html/приложение/код/​​ядро ​​/ Mage/XmlConnect/контроллеры/Adminhtml/controller.php"

  • ..."/public_html/app/code/core/Mage/Adminhtml/контроллеры/Controller.php "

  • ... "/ public_html/приложение/код/​​сообщества/Phoenix/Moneybookers/контроллеры/Controller.php"

  • ... "/ public_html/приложение/код/​​ядро ​​/ Mage/Защитный код/​​Контроллеры/Adminhtml/controller.php "

  • ... "/ public_html/приложение/код/​​ядро ​​/ Mage/CURRENCYSYMBOL/контроллеры/Adminhtml/controller.php"

  • ..."/public_html/приложение/код/ядро/Маг/Валюта Символ/контроллеры/Adminhtml/IndexController.php «

Решено 3:39 вечера 10/10/2013: Хорошо, он исправлен, хотя и довольно грубо. Я сделал вывод предложения var_dump от Alan Storm, чтобы иметь в виду, что я создал ошибку где-то в корневом пуле кодов (это не то, что я намеревался делать, прикручивая код по умолчанию). К сожалению, для точного обучения я заменил его всем стандартным кодом ядра ядра 1.7.0.2. Это было сделано до того, как Алан обновил свой первоначальный ответ с большим количеством предложений, которые я никогда не расследовал. Спасибо Алан, ты рад.

+0

Помогает ли это? http://stackoverflow.com/questions/5871501/magento-admin-404 –

+0

Нет, это не так. Я как раз собирался добавить, что файл «app/etc/use_cache.ser» для меня не существует. Запрос ничего не делает, потому что все настройки этих столбцов уже находятся в '0'. – ooblek6000

+1

Какая страница Magento 404? Их много, и каждый из них происходит по разной причине. Http://alanstorm.com/magentos_many_404_pages –

ответ

21

не нет маршрута 404 ошибка обычно указывает на Magento не может найти файл контроллера он считает, что необходимо загрузить (обычно из-за неправильной настройки)

Самый простой способ диагностировать это прыгать в _validateControllerClassName

#File: app/code/core/Mage/Core/Controller/Varien/Router/Standard.php 
protected function _validateControllerClassName($realModule, $controller) 
{ 
    $controllerFileName = $this->getControllerFileName($realModule, $controller); 

    if (!$this->validateControllerFileName($controllerFileName)) { 
     return false; 
    } 

    $controllerClassName = $this->getControllerClassName($realModule, $controller); 
    if (!$controllerClassName) { 
     return false; 
    } 

    // include controller file if needed 
    if (!$this->_includeControllerClass($controllerFileName, $controllerClassName)) { 
     return false; 
    } 

    return $controllerClassName; 
} 

и отбросить некоторые каротажные работы или var_dump с вокруг обратного false статуты. Это должно сказать вам, какие файлы Magento ищет и не может найти - обычно достаточно указать на проблему.

if (!$this->validateControllerFileName($controllerFileName)) { 
     var_dump($controllerFileName); 
     return false; 
    } 

    $controllerClassName = $this->getControllerClassName($realModule, $controller); 
    if (!$controllerClassName) { 
     var_dump($controllerClassName); 
     return false; 
    } 

    // include controller file if needed 
    if (!$this->_includeControllerClass($controllerFileName, $controllerClassName)) { 
     var_dump("Couldn't include: $controllerFileName"); 
     return false; 
    } 

Update: Это нормально для Magento ищет файл контроллера в нескольких местах - каждый модуль, который зарегистрирован как содержащий adminhtml файлы контроллера должен быть проверен.

Однако почти все файлы контроллера, которые ищут, имеют имя /Controller.php. На индексной странице по умолчанию /admin это должно быть IndexController.php. Это заставляет меня думать, что ваша система думает, что она должна искать контроллер с пустым именем (вероятно, значение контроллера по умолчанию с /admin (а не admin/index) - это URL-адрес, который вы используете)

Есть много причин, по которым это может произойти - многие вращаются вокруг файла ядра, который изменяется, или узел конфигурации в модуле, установленный на неправильное значение. Если нижеприведенные решения не работают для вас, вам нужно попробовать разложить свою базу кода по сравнению с чистой, отключив каждый настраиваемый модуль, и если эти исправления вернут модули обратно, пока не обнаружен проблемный модуль, или не погрузитесь глубоко в отладку кода маршрутизации Magento, чтобы понять, почему ваша система недовольна.

Одной из распространенных причин такого поведения является недопустимым значением (или нет значения вообще) быть установлен на пути пользовательского администратора в

System -> Configuration -> Admin -> Admin Base URL -> Use Custom Admin Path 

Если значение «пользовательский путь администратора» является пустым, или содержат и дополнительные /, это может помешать маршрутизатору.

Поскольку вы не можете получить доступ к администратору, попробуйте выполнить следующий запрос SQL

select * from core_config_data where path like '%custom_path%';  
... 
292 default 0 admin/url/use_custom_path 1 
293 default 0 admin/url/custom_path admin/ 

Если вы видите результаты, аналогичные приведенным выше, или admin/url/custom_path пустой/не-настоящее, но admin/url/use_custom_path еще 1 - то это твоя проблема.

Попробуйте удалить эти значения конфигурации (admin/url/use_custom_path) и (admin/url/use_custom_path) с core_config_data.

Если это не относится к системе, на мой пустой контроллер theroy моей догадкой будет по неизвестной причине Свода на

#File: app/code/core/Mage/Core/Controller/Varien/Router/Admin.php 
public function fetchDefault() 
{ 
    // set defaults 
    $d = explode('/', $this->_getDefaultPath()); 
    $this->getFront()->setDefault(array(
     'module'  => !empty($d[0]) ? $d[0] : '', 
     'controller' => !empty($d[1]) ? $d[1] : 'index', 
     'action'  => !empty($d[2]) ? $d[2] : 'index' 
    )); 
} 

является заполнением controller ключа с пустым значением.

+0

Спасибо Алан, он выдал много путей контроллера. Однако после загрузки другой копии 1.7.0.2 я не смог найти эти файлы в новой копии. Я поместил свой вывод в редактирование на мой оригинальный вопрос. Какие-либо предложения? – ooblek6000

+0

Вверху моей головы. Для Magento нормально искать файл контроллера в нескольких местах - каждый модуль, который зарегистрирован как содержащий файлы контроллера adminhtml, должен быть проверен. Тем не менее, почти все файлы контроллера, которые ищутся, называются '/ Controller.php'. Для индексной страницы '/ admin' по умолчанию это должно быть' IndexController.php'. Это заставляет меня думать, что ваша система думает, что она должна искать контроллер с пустым именем. У меня может появиться больше мыслей об этом позже, надеюсь, что вы сможете отследить его. –

+0

@ ooblek6000 Добавил некоторые дополнительные мысли в обновленное выше. Удачи! –

12

В моем случае мой администратор давал мне 404, потому что магазина нет. Я решил его, выполнив следующий запрос

SET SQL_SAFE_UPDATES=0; 
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; 
SET SQL_SAFE_UPDATES=1; 

Вы можете проверить, если вы получаете ошибку ниже авторизованы вар/Журнал/system.log

ERR (3): Recoverable Error: Argument 1 passed to Mage_Core_Model_Store::setWebsite() must be an instance of Mage_Core_Model_Website, null given, called in /.../app/code/core/Mage/Core/Model/App.php on line 634 and defined in /.../app/code/core/Mage/Core/Model/Store.php on line 395

+0

спасибо приятелю! вы спасли меня – rbncha

2

Я получил эту проблему на магазин с обычаем админ URL www.shop.com/customadminroute/ и System -> Configuration -> Web -> параметры URL -> Добавить магазин код в URLs: Enabled

в этом случае следующий модуль должен исправить:

https://github.com/romfr/404adminlogin

Благодаря блог пост Кармен Бремене:

http://neoshops.de/2012/09/07/magento-404-fehlerseite-beim-admin-login/

3

Перед что-нибудь проверить файл конфигурации (приложение/и т.д./локальный.xml) и убедитесь, что у вас есть «admin» в качестве значения для тега frontName. напр .:

<adminhtml> 
    <args> 
    <frontName><![CDATA[admin]]></frontName> 
    </args> 
</adminhtml> 

Обычно, когда вы пытаетесь http://yoursite.com/admin это дает вам админку Попробуйте использовать URL, как этот http://yoursite.com/index.php/admin и если это работает, вероятно, вам нужно только изменить правила перезаписи или следовать предложениям (см ссылка ниже)

Смежные вопросы