Я создал модуль, который работает на моей установке Windows XAMPP. Однако тестирование на Linux не работает корректно. Более конкретно, мой контроллер, похоже, не загружается.
При посещении URL- www.mysite.com/modulename/standard/
меня появляется ошибка 404. Я ожидаю получить сообщение, выводящее die('here')
который предшествует определению класса в контроллере.
Файл контроллера – /app/code/local/Namespace/Modulename/controllers/StandardController.php
.
Класс определяется внутри этого файла следующим образом:
class Namespace_Modulename_StandardController extends Mage_Core_Controller_Front_Action
Выдержка из моего файла конфигурации XML приведена здесь:
<frontend> <routers> <modulename> <use>standard</use> <args> <module>Namespace_Modulename</module> <frontName>modulename</frontName> </args> </modulename> </routers> <!-- other blocks here --> </frontend>
Моя первоначальная мысль заключалась в том, что это была проблема чувствительности к регистру, которую я не заметил, развиваясь в Windows. Ранее фрагмент XML был следующим, что также не сработало. Также обратите внимание, что я попытался посетить www.mysite.com/Modulename/standard
и www.mysite.com/modulename/standard
для обеих версий XML с ошибкой 404 каждый раз.
<Modulename> <use>standard</use> <args> <module>Namespace_Modulename</module> <frontName>Modulename</frontName> </args> </Modulename>
Кто-нибудь знает, в чем проблема?
Спасибо.
редактировать
В соответствии с запросом, вот конфигурационный файл модуля. Все это кажется правильным: модуль отображается на странице Admin / Developer, а экран конфигурации модуля (сгенерированный в system.xml) появляется в бэкэнд. Более того, части модуля (и, по-видимому, контроллер) работают в интерфейсе!
<config> <modules> <Namespace_Modulename> <active>true</active> <codePool>local</codePool> </Namespace_Modulename> </modules> </config>
Изменить 2
Некоторые версии могут оказаться полезными. PHP 5.3 Magento 1.5.1.0
Попробуйте этот код:
<frontend> <routers> <namespace_modulename> <use>standard</use> <args> <module>Namespace_Modulename</module> <frontName>modulename</frontName> </args> </namespace_modulename> </routers> <!-- other blocks here --> </frontend>
Является ли ваш контроллер фактически названным StandardController.php? В случае с файлами, зависящими от регистрационных данных, перед «Контроллером» следует начинать с буквы верхнего регистра, а все остальные буквы должны быть внизу
Я не могу в это поверить!
Моя коробка разработки была обновлена без моего ведома, казалось бы, и в процессе моей настройки Apache была изменена! Наконец, я понял, что не получаю обычную 404-страничную страницу Magento и только простую, уродливую страницу 404 и проверил журналы ошибок Apache, в которых говорилось, что файл /Modulename/standard
не существует. Обновление моей конфигурации Apache, чтобы добавить следующие исправленные проблемы:
<Directory "mymagentodirectory"> AllowOverride All </Directory>
Я не могу в это поверить. Спасибо всем, кто нашел время, чтобы прочитать и ответить! 🙂