Не удается заставить мой проект Zend Framework 2 работать на хост-сервере

В настоящее время я занимаюсь разработкой интернет-магазина на PHP. Для этого я использую Zend Framework 2.

Все мои маршруты существуют из локали, т.е. "nl_NL" или "en_EN", за которыми следуют контроллер и действие www.mydomain.com/nl_NL/profile/login. Посмотрите здесь пример маршрута, используемого в моем проекте. Этот принадлежит модулю профиля: http://pastebin.com/jmim47w8.

Если у посетителя нет учетной записи и не установлен Cookie, в качестве переменной локали сначала будет установлена ​​переменная, полученная из следующей функции:

locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE'])

Если установлен файл cookie, будет использоваться это значение. С другой стороны, если у пользователя есть учетная запись и он вошел в систему, используемая переменная будет извлечена из профиля пользователя.

Весь мой скрипт работает на локальном хосте. Однако на сервере это не так. При загрузке страницы ничего не отображается. Я проверил журналы ошибок и не смог ничего найти. Однако, когда я помещаю / nl_NL / или любой другой языковой стандарт, который отвечает требованиям регулярного выражения "locale route" в URL-адресе вручную, он работает.

Моей первой мыслью было, что модуль apl url_rewrite не был установлен или активирован, но так как другие сайты также используют этот модуль и находятся на одном сервере, это не кажется логичным. Конечно, я пытался проверить, была ли она включена, запустив несколько скриптов, но безрезультатно. Так как наш сервер настроен так, чтобы не разрешать запуск сценариев оболочки или проверять, включены ли модули apache с помощью phpinfo(), это довольно сложно убедиться.

Я пытался проверить, что мой файл.htaccess правильный, но я в значительной степени новичок в.htaccess. Это мой.htaccess:

RewriteEngine On
# The following rule tells Apache that if the requested filename
# exists, simply serve it.
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
# The following rewrites all other queries to index.php. The 
# condition ensures that if you are using Apache aliases to do
# mass virtual hosting, the base path will be prepended to 
# allow proper resolution of the index.php file; it will work
# in non-aliased environments as well, providing a safe, one-size 
# fits all solution.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]

Чтобы увидеть, как выглядит мой IndexController, посмотрите здесь: http://pastebin.com/AEgm3Jmk.

В общем, мне бы очень хотелось узнать, как заставить проект Zend FW 2 работать на хост-сервере, все еще используя переписывание URL или любой другой способ, который позволяет использовать переменные локали.

Если в этом посте чего-то не хватает, чтобы помочь мне в дальнейшем, я буду рад опубликовать это.

1 ответ

Решение

Я решил проблему, сейчас все работает нормально. Я обнаружил, что проблема в моем файле конфигурации local.php. Проблема заключалась в ошибке в этом файле, поэтому это была ошибка записи (поврежденный файл).

@ Алекс, спасибо за помощь, ценим это.

Другие вопросы по тегам