Установка переменных PHP в httpd.conf?

Я бы хотел автоматически изменить настройки подключения к базе данных на основе per-vhost, так что мне не нужно редактировать какой-либо PHP-код, поскольку он перемещается из стадии, чтобы жить и все же иметь доступ к различным базам данных. Это на одном выделенном сервере.

Итак, мне было интересно, могу ли я установить переменную PHP или константу в httpd.conf как часть определения vhost, которую сайт может затем использовать для автоматической привязки к тестовой базе данных?

$database = 'live';
if (some staging environment variable is true) {
    $database = 'testing'; // and not live
}

Если это невозможно, я предполагаю, что в этом случае я могу спокойно проверить имя хоста, на котором я запущен, чтобы сказать, но мне бы хотелось что-то менее хрупкое

Надеюсь, это имеет смысл

большое спасибо

Ян

Ответ 2

Да... вы можете сделать это:

SetEnv DATABASE_NAME testing

а затем в PHP:

$database = $_SERVER["DATABASE_NAME"];

или

$database = getenv("DATABASE_NAME");

Ответ 3

Вы можете установить переменную среды и получить ее с помощью PHP.

В httpd.conf:

SetEnv database testing

В вашем PHP:

if (getenv('database') == 'testing') {

или

if ($_SERVER['database'] == 'testing') {

Ответ 4

Я бы не установил переменную среды, так как это также видно по умолчанию script выводам, таким как PhpInfo();

просто используйте php_value в вашем .htaccess прямо над папкой htdocs, и все готово и безопасно:)

Ответ 5

Проблема с .htaccess заключается в том, что она является частью дерева базы кода. И дерево базы кода является частью VC/SVN. Следовательно, любое изменение в локальном /dev переходит к производству. Сохранение настройки переменной env в httpd.conf избавляет вас от осторожности, чтобы не случайно перезаписать флаг vs dev. Если, конечно, вы не хотите использовать IP-адрес или имя хоста, оба из которых не являются масштабируемыми.

Ответ 6

Я также рассматривал этот тип решения. Я обнаружил, что в Apache вы можете использовать SetEnv KeyName DataValue в http.conf, а в IIS вы можете использовать Fast CGI Settings → Edit... → Environment Variables → ... и добавить KeyName, DataValue.

Это, в свою очередь, позволяет устанавливать PHP $var = $_SERVER["KeyName"]; в DataValue и использоваться по мере необходимости как в IIS, так и в Apache последовательно.

Я знаю, что это странный прецедент. Я использую WAMP на работе и MAMP дома, поэтому приятно работать одинаково.