После настройки виртуального хоста в zend framework образ проекта не виден

Мой проект структура выглядит следующим образом ---

  • /

    • публичный

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

      • uploads (all the uploaded image by this application)
      • .....................

как это

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

Я мог бы происходить по следующей причине

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

Ниже приведен мой файл .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>

Спасибо, Рузди.


person user802697    schedule 17.06.2011    source источник


Ответы (2)


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

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

cd /var/www/toletbd/public ln -nfs /var/www/toletbd/data/images изображения

Убедитесь, что указанная выше папка data/images доступна пользователю «apache», иначе вы получите сообщение об отказе в доступе.

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

<img src="/images...">
person Sahal    schedule 17.06.2011
comment
есть ли другой способ получить к нему доступ, используя некоторую конфигурацию apache. - person user802697; 17.06.2011
comment
@user802697 user802697 Сомневаюсь, что вы можете сделать это просто так. Но да, вы можете, для этого потребуется другой файл .php для отображения ваших изображений - отображение изображения - person Rakesh Sankar; 17.06.2011
comment
@ user802697: если вам не нужны ссылки в файловой системе, используйте команду Alias ​​в apache, чтобы связать некоторый URL-адрес с физическим каталогом (который может находиться за пределами webroot) псевдоним /myuploaded /var/www/toletbd/data/uploads - person regilero; 17.06.2011

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

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

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

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

person David Weinraub    schedule 17.06.2011