У меня есть файл config.php, где я просто делаю огромный массив, содержащий всю конфигурацию фреймворка. Кроме того, источник строки источника базы данных, такой как "mysql: host = localhost; dbname = mydb" (что называется, btw?) И имя пользователя + пароль для БД. Я боюсь, что это:
- глупы
- Нехорошо; лучшее решение там
- не защищен (?)
так как это делают эксперты PHP?
Ответ 1
Как это сделать, но вы также можете попробовать некоторые из этих решений:
- Сохраните файл конфигурации вне веб-папки (для этого требуется, чтобы конфигурация open_basedir в PHP отключена).
-
Ограничьте доступ к файлу конфигурации с помощью .htaccess:
< Местоположение /config.php > Отказаться, разрешить Отказаться от всех
</& Расположение GT;
-
Используйте файлы .ini и parse_ini_file (это не само по себе решение, но может быть объединено с другими)
Ответ 2
Если у вас есть папка www
, httpdocs
или public_http
или что-то в этом роде, где расположено ваше приложение php, тогда хорошая практика - поместить файл конфигурации за пределы этой папки и просто получить к нему доступ например:
include "../config.php";
Никто не может получить доступ к этому файлу без доступа к FTP, и поэтому он относительно безопасен по сравнению с наличием в папке приложения.
Если у вас нет такой папки, вы можете ее создать и создать файл .htaccess в корневом каталоге, который перенаправляет все запросы в эту папку. Есть много разных способов сделать это, но это другой вопрос все вместе.
Ответ 3
Я храню его в файле конфигурации обычного текста ini, обычно над корнем веб-сайта, чтобы не разрешать пользователям доступ к нему. В тех случаях, когда он доступен, у меня обычно есть файл .htaccess с deny from all
, чтобы предотвратить доступ к нему.
Сохранение его в файле PHP, доступном для пользователей, должно быть прекрасным, но это не идеально. Если дескриптор правильно обрабатывает файлы PHP, даже если люди могут получить доступ к файлу, они не могут получить доступ к значениям, поскольку они просто получают вывод (ничего). Есть, конечно, проблемы с этим (см. Комментарии).
Использование PHP файлов является наиболее распространенным методом с PHP-проектами (как FOSS, так и коммерческими), которые я использовал. Большинство из них не сохранили их выше корня сети. При любой стабильной настройке на самом деле очень мало места для хранения вашего файла конфигурации над корнем веб-сайта, хотя данный Закон Мерфи стоит сделать, если вы можете (это или использовать .htaccess или равноценность для вашего сервера, чтобы лишить пользователя доступа к каталогу)
Ответ 4
Почему хранить имя пользователя и пароль БД в "config.php" не так? пока я знаю, данные в этом файле не могут быть показаны публично.
например.
<?php
$DB_User = "amindzx";
$DB_Pass = "Something";
// connect to DB and so on.
?>
если только хакер не сможет получить доступ к вашему FTP.
Ответ 5
Почему это глупо хранить простой файл config.php без каких-либо ценных бумаг? Даже если программист находит этот файл, он ничего не может сделать, потому что, как сказал amindzx, "этот файл не может быть показан публично". Или я ошибаюсь?
Ответ 6
С конфиденциальными данными, такими как учетные данные базы данных или платежного шлюза, и когда у меня есть контроль над сервером, мне нравится добавлять в конфигурацию своего виртуального хоста apache следующие строки:
SetEnv DB_USER "myuser"
SetEnv DB_PASS "mypass"
В вашем PHP вы можете получить доступ к ним с помощью $_SERVER ['DB_USER']. Вы можете сделать этот конфигурационный файл доступным только для root, который вы никогда не сможете сделать с файлом, который php обращается во время выполнения. Одно предостережение. Обязательно отключите php_info и не подвергайте эти переменные чем-то глупому как print_r ($ _ SERVER). (Большая часть этого перефразируется или украдена из здесь.)
Для нечувствительной конфигурации мне нравится делать класс, полный констант, который похож на вашу настройку, но мне нравится OOP-его.
class Application
{
const CONTACT_EMAIL = "me@mysite.com";
}
usage:
$contactEmail = Application::CONTACT_EMAIL;
Ответ 7
Я обычно храню настройки в файле config.php, такие как настройки подключения к базе данных, пути к файлам и т.д.