Най-лесният начин е, както казахте, да използвате конфигурационен файл.
Много рамки използват това (Zend
, CakePHP
, Кохана
и т.н.) и това е най-често срещаният начин за правене на неща (дори в среда, която не е PHP, като ASP.NET с неговия web.config
файлове). Това ви позволява също да копирате стойности на конфигурация от среда в среда, като просто копирате файловете за сайта, което е предимство пред разчитането на променливи на средата за настройка на сървъра (които много бързо могат да бъдат загубени и забравени).
Не трябва да се притеснявате за закриване на паролата, тъй като това не е файл, достъпен за целия свят, той със сигурност не трябва да бъде достъпен в мрежата. Това, което имам предвид с това, е, че или а) кажете на вашия уеб сървър да не обслужва вашия конфигурационен файл ( IIS
вече прави това с web.config
файлове и обслужва HTTP 404.8 статус вместо съдържанието) или б) Преместете го извън обслужваната от вас уеб директория. Ако някой може да види вашия конфигурационен файл, това е по-лошо, отколкото да го имате в изходния си код.
Също така ще бъде добра идея да имате основна (празна / по подразбиране) версия на конфигурационния файл и да го отделите по среди, така че да имате различен конфигурационен файл за платформи за производство, разработка и тестване.
Променливата на средата е най-често срещаният начин за разграничаване на тези среди, нещо като кода по-долу:
// Check if it's been set by the web server
if (!empty($_ENV['ENVIRONMENT'])) {
// Copy from web server to PHP constant
define('ENVIRONMENT', $_ENV['ENVIRONMENT']);
}
if (!defined('ENVIRONMENT')) {
// Default to development
define('ENVIRONMENT', 'development');
}
// Load in default configuration values
require_once 'config.default.php';
// Load in the overridden configuration file for this environment
require_once 'config.' . ENVIRONMENT . '.php';
Друг начин, който е доста често срещан, е да използвате XML конфигурационен файл и да четете само стойностите, които са ви необходими, както е подходящо (съхраняване на кеширано копие на конфигурационния файл в паметта). Това може много лесно да бъде ограничено само до зареждане в определени стойности, вместо да позволява произволно включване на PHP файлове и като цяло е по-добро решение според мен, но горното трябва да ви накара да започнете в правилната посока.
Вероятно ще искате вашия VCS за да игнорирате файла. От друга страна, може да искате скелет на файла или такъв с разумни стойности по подразбиране (последното не се отнася за данните за влизане, разбира се), за да се контролира версията. Често срещан начин за справяне с това е да имате регистриран конфигурационен файл на шаблона и инсталационната процедура копира този файл до местоположението на истинския конфигурационен файл, където е персонализиран. Това може да бъде ръчен или автоматизиран процес.
(Въпреки че донякъде не е свързано с основния въпрос, въвеждането на константа за вашата среда ви позволява да правите някои други страхотни неща като отлагане на реализация на фалшива поща вместо на живо SMTP един, но разбира се това може да стане и с конфигурационен файл)