Где я могу разместить значения конфигурации моего веб-сайта в настройке сервера LAMP? - PullRequest
1 голос
/ 14 декабря 2011

Я обычно помещаю значения конфигурации базы данных и веб-сайта в глобальные переменные в файле .php. Это включается в любую страницу, которой требуется доступ к базе данных.

Есть ли где-нибудь более разумное, что эти вещи должны идти? Могу ли я добавить произвольные значения в php.ini, и если да, то как? Или как насчет http.conf в apache? Могу ли я настроить свой сайт таким образом?

В идеале мне бы хотелось решение, которое означает, что конфигурация не читается при каждом отдельном запросе.

Ответы [ 5 ]

2 голосов
/ 14 декабря 2011

Мой опыт говорит, что самый простой способ - лучший, поэтому я бы поместил conf подключения к базе данных в файл, который является частью проекта . Зачем? Потому что:

  • Каждый проект имеет или должен иметь файл / файлы конфигурации (INI, XML, JSON ....)
  • Глобальные переменные r в настоящее время перегружены и мертвы
  • Если кто-то захочет найти, где изменить конфигурацию базы данных, файлы Apache будут последними местом, которое они должны проверять!

Мой совет относительно простого решения для вас - создать файл, такой как Config.php, и поместить в него класс, который загружает файл XML, INI или другой тип со структурными данными. А затем, позвонив по номеру getters , вы можете получить свою конфигурацию в любое время и в любом месте.

1 голос
/ 14 декабря 2011

В Apache вы можете использовать SetEnv

SetEnv NAME value

, который будет доступен с $_SERVER['NAME']

http://httpd.apache.org/docs/2.2/mod/mod_env.html

С PHP вы можете установить MySQL по умолчаниюнастройки подключения в INI

mysql.default_host = ...
mysql.default_user = ...
mysql.default_password = ...

или

mysqli.default_host = ...
mysqli.default_user = ...
mysqli.default_password = ...
0 голосов
/ 14 декабря 2011

Хранение учетных данных БД

Я настоятельно рекомендую использовать INI в сочетании с SetEnv в вашем файле .htaccess.Как уже говорили другие.

Постоянство объекта

Однако, если вы хотите избежать необходимости загружать эти данные для каждого запроса, вам понадобится некоторое постоянство объекта.Например, Doctrine или MongoDB или оба .https://stackoverflow.com/a/4081150/486233

постоянство объекта в php

0 голосов
/ 14 декабря 2011

Я нашел лучший способ возиться. Вы можете добавить произвольные параметры конфигурации в php.ini, например,

[MyGreatWebsite]
dbname=db_awesome

И вы можете получить их с помощью функции get_cfg_var, например,

get_cfg_var('dbname')

Это не разоблачение вещей через phpinfo (как и в случае переменной env), а только чтение конфигурации только один раз (Поддается проверке, поскольку изменение значений требует перезапуска сервера)

0 голосов
/ 14 декабря 2011

Вы можете поместить свои данные в качестве значений среды в Apache, как указал Петах, через SetEnv.

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

Другой распространенный способ, как вы сказали, состоит в том, чтобы хранить переменные конфигурации в файле за пределами корня документа, чтобы он не был доступен для браузера, и чтобы ваш код не читал и не показывал его содержимое другим глазам. .

Я не думаю, что есть экстравагантные классные способы сделать это:)

...