Zend Framework - нет общей папки - PullRequest
1 голос
/ 23 марта 2010

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

Часто приложения с ZF выглядят так:

  • корень
    • 1010 * общественное *
      • index.php
      • .htaccess
    • применение
    • библиотека

У меня есть что-то вот так:

    • применение
  • index.php
  • .htaccess

Весь мой код находится в папке приложения. Но есть также некоторые файлы .ini и .xml с конфиденциальной информацией, например, логины и пароли и прочее ...

Если я добавлю .htaccess в папку приложения с помощью deny from all, защищена ли информация внутри папки?

Ответы [ 4 ]

8 голосов
/ 23 марта 2010

Я писал об этом недавно на http://akrabat.com/zend-framework/zend-framework-on-a-shared-host/.

Основы:

Создайте index.php в корневой папке:

<?php 
define('RUNNING_FROM_ROOT', true);
include 'public/index.php';

Создайте файл .htaccess в корневой папке:

SetEnv APPLICATION_ENV production

RewriteEngine On
RewriteRule .* index.php 

Возможно, установите APPLICATION_ENV на разработку во время тестирования:)

Имейте в виду, что при обращении к статическим файлам помощник вида baseUrl () теперь указывает на вашу корневую папку, а не на общую / папку.

2 голосов
/ 23 марта 2010

Вы можете сохранить обычную структуру каталогов на виртуальном хостинге.Просто измените корень документа с помощью .htaccess.Я делаю это так при работе с виртуальным хостингом:

RewriteEngine On

php_value upload_max_filesize 15M
php_value post_max_size 15M
php_value max_execution_time 200
php_value max_input_time 200
# Exclude some directories from URI rewriting
#RewriteRule ^(dir1|dir2|dir3) - [L]

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]
1 голос
/ 23 марта 2010

Если я добавлю .htaccess в папку приложения с запретом от всех, будет ли информация защищена внутри папки?

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

Если вы можете (я не знаю, поддерживает ли это ZF), переименуйте файлы xml и ini в .php. Таким образом, даже если защита будет удалена, они будут обрабатываться как файлы PHP, а не предоставляться общественности. Это немного параноидально, но если это выполнимо без особых хлопот, неплохая идея.

0 голосов
/ 23 марта 2010

У вас есть доступ только к общедоступному каталогу на виртуальном хосте?Обычно хосты дают вам доступ по крайней мере к одному каталогу выше этого, и в этом случае гораздо лучшим решением будет создание там папки, в которую вы помещаете свое приложение.Затем вы можете создать символическую ссылку на публичный каталог vhost в публичный каталог вашего приложения.В противном случае вы можете, по крайней мере, сохранить свои файлы конфигурации вне публичного каталога вашего vhost, так как вы можете легко указать ZF, где они находятся.использовать файловую структуру, подобную той, которую вы предложили.Предполагая, что ваши конфиденциальные файлы ini / XML предназначены для использования с Zend_Config, компонент также поддерживает PHP-массивы для конфигурации (см. Пример № 1 в http://framework.zend.com/manual/en/zend.config.introduction.html).Это было бы немного более безопасным вариантом для вас, так как при случайном отказе ваш файл htaccess ваши конфиденциальные данные не будут доступны для просмотра, пока файлы PHP все еще анализируются как PHP.

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