Расположение .ini для веб-приложений

У меня есть приложение php, и я планирую сохранить важные настройки в файле .ini. Однако я думаю, что к этому файлу можно получить доступ через Интернет, так где же «стандартное место» для его размещения?


person siliconpi    schedule 12.05.2011    source источник


Ответы (7)


Вы можете хранить его над корнем документа/веб-сайта или специально заблокировать доступ к нему. Например, общая структура для PHP-приложений:

application/
public/

Где public — это корень веб-сайта, поэтому я обычно храню конфигурацию приложения в application/config, где я знаю, что к ней нельзя получить доступ.

Альтернативой может быть блокировка с помощью Apache:

<!-- Block access to all .ini files -->
<Files ~ "\.ini">
    Order deny,allow
    Deny from all
</Files>
person Ross    schedule 12.05.2011

«Стандартное место» нигде не зависит от корня каталога апача. Например, вы можете разместить его под /home/someuser/ или где-то еще.

person KingCrunch    schedule 12.05.2011

Поместите файл .ini за пределы корневого веб-сайта или защитите его с помощью .htaccess, если вы действительно хотите сохранить его в корневом веб-сайте.

person Narcis Radu    schedule 12.05.2011

Доступ к нему можно получить, если вы поместите свой INI-файл в свой webroot/docroot.

Первый шаг — убедиться, что файл недоступен через docroot.

person JohnP    schedule 12.05.2011

Честно говоря, я бы использовал базу данных.

Однако, если вы действительно хотите использовать плоский файл (например, .ini), вы можете поместить его в каталог и использовать .htaccess, чтобы люди не могли получить к нему доступ через свой браузер. Таким образом, вы все еще можете получить доступ к файлу через функции файла php.

Для этого создайте файл с именем .htaccess в папке, которую вы хотите защитить (например, ini/).

Затем в этом файле поместите:

deny from all

Папка теперь недоступна при переходе по URL-адресу в браузере.

person psynnott    schedule 12.05.2011
comment
Вы не можете хранить имя пользователя/пароль/хост базы данных в базе данных, хотя можете. Файл конфигурации по-прежнему полезен для всего нетривиального, а жесткое кодирование зарезервировано только для одноразовых вещей. - person Dan Brown; 12.05.2011

Поместите конфигурацию в каталог, недоступный для чтения веб-сервером, но доступный для чтения для приложения. Как правило, у вас есть определенный каталог, доступный для чтения веб-сервером, например «web», «www», «public» или «public_html». Убедитесь, что вы поместили его в каталог ниже этого.

Таким образом, ваше приложение сможет прочитать файл:

$cfg = parse_ini_file( 
    realpath( dirname( __FILE__ ) . '/../' ) . '/config.php' 
);

Однако ваш веб-сервер не знает, как к нему добраться, поэтому он безопасен.

person Berry Langerak    schedule 12.05.2011

хорошим примером является Zend FW или любые другие php-фреймворки. структура каталога:

application/config/config.ini
library/Zend/
public/index.php

где общественность доступна из Интернета

person Mohammad Ali Akbari    schedule 12.05.2011