После настройки виртуального хоста в Zend Framework изображения проекта не видны - PullRequest
0 голосов
/ 17 июня 2011

Мой проект структура похожа на следующую ---

  • /

    • * 1011 общественности *

      • .htaccess
      • index.php
      • шаблон ...........
    • данные

      • загрузок (все загруженные изображения этим приложением)
      • .....................

вот так

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

Возможно, это происходит по следующей причине

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

Followin - мой файл .htaccess ----------

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

и на хосте файла apache настройки следующие ---------

<VirtualHost 192.168.0.3:80>
   DocumentRoot "/var/www/toletbd/public"
   ServerName hometolet.local

   # This should be omitted in the production environment
   SetEnv APPLICATION_ENV development

   <Directory "/var/www/toletbd/public">
       Options Indexes MultiViews FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from all
   </Directory>

</VirtualHost>

Спасибо Ruzdi

Ответы [ 2 ]

4 голосов
/ 17 июня 2011

Создайте символическую ссылку для папки data внутри вашей общей папки (поскольку это ваш корневой каталог документов, который доступен для общего доступа.

Запустите эту команду:

cd/ var / www / toletbd / public ln -nfs / var / www / toletbd / data / images images

Убедитесь, что указанная выше папка data/images доступна для пользователя "apache", в противном случае вы будетеполучите ошибку с отказом в разрешении.

Теперь вы можете использовать ее примерно так:

<img src="/images...">
1 голос
/ 17 июня 2011

Для доставки изображений, которые хранятся в папке вне корневого веб-каталога, вы можете создать ImageController с помощью метода getAction(), который:

  1. Ищет изображение в папке
  2. Устанавливает соответствующие заголовки mime-типа в ответе
  3. Выполняет readfile() для доставки контента.

Конечно, вам нужно добавить маршрут, который отображает эти URL-адреса изображений в этот контроллер / действие.

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

...