У меня есть приложение php, и я планирую сохранить важные настройки в файле .ini. Однако я думаю, что к этому файлу можно получить доступ через Интернет, так где же «стандартное место» для его размещения?
Расположение .ini для веб-приложений
Ответы (7)
Вы можете хранить его над корнем документа/веб-сайта или специально заблокировать доступ к нему. Например, общая структура для PHP-приложений:
application/
public/
Где public
— это корень веб-сайта, поэтому я обычно храню конфигурацию приложения в application/config
, где я знаю, что к ней нельзя получить доступ.
Альтернативой может быть блокировка с помощью Apache:
<!-- Block access to all .ini files -->
<Files ~ "\.ini">
Order deny,allow
Deny from all
</Files>
«Стандартное место» нигде не зависит от корня каталога апача. Например, вы можете разместить его под /home/someuser/
или где-то еще.
Поместите файл .ini за пределы корневого веб-сайта или защитите его с помощью .htaccess, если вы действительно хотите сохранить его в корневом веб-сайте.
Доступ к нему можно получить, если вы поместите свой INI-файл в свой webroot/docroot.
Первый шаг — убедиться, что файл недоступен через docroot.
Честно говоря, я бы использовал базу данных.
Однако, если вы действительно хотите использовать плоский файл (например, .ini), вы можете поместить его в каталог и использовать .htaccess, чтобы люди не могли получить к нему доступ через свой браузер. Таким образом, вы все еще можете получить доступ к файлу через функции файла php.
Для этого создайте файл с именем .htaccess в папке, которую вы хотите защитить (например, ini/).
Затем в этом файле поместите:
deny from all
Папка теперь недоступна при переходе по URL-адресу в браузере.
Поместите конфигурацию в каталог, недоступный для чтения веб-сервером, но доступный для чтения для приложения. Как правило, у вас есть определенный каталог, доступный для чтения веб-сервером, например «web», «www», «public» или «public_html». Убедитесь, что вы поместили его в каталог ниже этого.
Таким образом, ваше приложение сможет прочитать файл:
$cfg = parse_ini_file(
realpath( dirname( __FILE__ ) . '/../' ) . '/config.php'
);
Однако ваш веб-сервер не знает, как к нему добраться, поэтому он безопасен.
хорошим примером является Zend FW или любые другие php-фреймворки. структура каталога:
application/config/config.ini
library/Zend/
public/index.php
где общественность доступна из Интернета