Автозагрузчик Zend не работает должным образом при совместном хостинге

#zend-framework #deployment #shared-hosting

#zend-framework #развертывание #общий хостинг

Вопрос:

Недавно я запустил проект zend Framework на общем хостинге. С большим трудом я заставил первую страницу индекса работать, но передал ей все автозагружаемые классы, такие как модели, формы, картографы, не найдены.

Вот версия .htaccess, которую я использую вне общего каталога в корневой папке.

 RewriteEngine On

RewriteRule ^.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]
  

Немного удивительным фактом является то, что одни и те же картографы и формы распознаются на главной странице или в baseUrl, но превосходят его, ничего не работает.

Что я делаю неправильно или не хватает?

Комментарии:

1. Ваш .htaccess выглядит странно, но я не думаю, что это причина. Является ли Zend Framework на php inlude path?

2. можете ли вы показать свой путь включения? можете ли вы показать нам исключение, возникающее при сбое автозагрузчика?

3. Можете ли вы показать свой код? Он должен работать, и автозагрузчик обычно не имеет ничего общего с правилами перезаписи. Но это трудно сказать без какого-либо сообщения об ошибке.

Ответ №1:

Я думаю, что если вы скопируете index.php и .htaccess из «общедоступной» папки Zend Framework и поместите ее в свой public_html или эквивалентный каталог. Если каталог вашего приложения Zend Framework находится в том же каталоге, что и public_html, тогда используется значение по умолчанию.файл htaccess и index.php файл должен работать.

 /home/yoursite
--application/
---- controllers
---- forms/
---- models/
---- views/
-- library/
-- public_html/ (public)
---- .htaccess
---- index.php
  

Комментарии:

1. тем не менее, классы не найдены, и пути к файлам не работают.

2. Можете ли вы опубликовать, что ваш index.php файл выглядит следующим образом, а также вам нужно будет использовать файл stock .htaccess.

Ответ №2:

Используйте это вместо

 RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
  

Основная идея заключается в том, что если на сервере существует файл для запрошенного URL, отправьте его в клиентский браузер, в противном случае отправьте запрос в приложение ZF для его обработки.

Чтобы сделать ваш общедоступный каталог доступным в корневом домене, отредактируйте вместо этого файл Apache httpd.conf . Напрямую сопоставьте ваш виртуальный хост с общедоступным каталогом.

Комментарии:

1. Я думаю, вы не знаете о том, что я спрашиваю о развертывании в среде общего хостинга. Это значение по умолчанию . htaccess, который поставляется с фреймворком zend.

Ответ №3:

Можете ли вы попробовать решение, которое я искал, и применить. Это сработало для меня. http://blog.motane.lu/2009/11/24/zend-framework-and-web-hosting-services /

Вы заполняете все содержимое /public_html/.htaccess (не /public_html/public/.htaccess) с помощью

 RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]