2010-03-22 3 views
1

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

Часто приложения с ZF выглядит следующим образом:

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

У меня есть sth. как то:

  • корень
    • применение
  • index.php
  • .htaccess

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

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

ответ

8

Я писал об этом недавно в 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() указывает на вашу корневую папку, а не на вашу общедоступную/папку.

1

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

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

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

0

У вас есть доступ к общедоступному каталогу на виртуальном хосте? Обычно хосты предоставляют вам доступ хотя бы к одному каталогу выше этого, и в этом случае гораздо лучшим решением будет создание папки, в которую вы помещаете свое приложение. Затем вы будете ссылаться на общедоступную директорию vhost в общий каталог вашего приложения. В противном случае вы могли бы, по крайней мере, сохранить свои файлы конфигурации вне общедоступного каталога вашего vhost, так как вы можете легко указать ZF, где они находятся.

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

2

Вы можете сохранить обычную структуру каталогов на общем хостинге. Просто измените корень документа на .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] 
+0

Вы все еще используете этот метод? Я чувствую, что это хороший метод для начала. Приветствия. – MEM

+0

@MEM Да, хотя я редко использую общий хостинг. Большинство веб-сайтов, которые я разрабатываю, переходят на виртуальный или выделенный сервер. –

+0

Большое спасибо. Это работает хорошо. –

Смежные вопросы