Ответ 1
Вы пытались использовать файл .htaccess? Вы можете переопределить значения php.ini, используя его.
Просто поместите файл .htaccess в каталог htdocs:
php_value name value
Дополнительная информация:
Я бы хотел автоматически изменить настройки подключения к базе данных на основе per-vhost, так что мне не нужно редактировать какой-либо PHP-код, поскольку он перемещается из стадии, чтобы жить и все же иметь доступ к различным базам данных. Это на одном выделенном сервере.
Итак, мне было интересно, могу ли я установить переменную PHP или константу в httpd.conf как часть определения vhost, которую сайт может затем использовать для автоматической привязки к тестовой базе данных?
$database = 'live';
if (some staging environment variable is true) {
$database = 'testing'; // and not live
}
Если это невозможно, я предполагаю, что в этом случае я могу спокойно проверить имя хоста, на котором я запущен, чтобы сказать, но мне бы хотелось что-то менее хрупкое
Надеюсь, это имеет смысл
большое спасибо
Ян
Вы пытались использовать файл .htaccess? Вы можете переопределить значения php.ini, используя его.
Просто поместите файл .htaccess в каталог htdocs:
php_value name value
Дополнительная информация:
Да... вы можете сделать это:
SetEnv DATABASE_NAME testing
а затем в PHP:
$database = $_SERVER["DATABASE_NAME"];
или
$database = getenv("DATABASE_NAME");
Вы можете установить переменную среды и получить ее с помощью PHP.
В httpd.conf:
SetEnv database testing
В вашем PHP:
if (getenv('database') == 'testing') {
или
if ($_SERVER['database'] == 'testing') {
Я бы не установил переменную среды, так как это также видно по умолчанию script выводам, таким как PhpInfo();
просто используйте php_value в вашем .htaccess прямо над папкой htdocs, и все готово и безопасно:)
Проблема с .htaccess заключается в том, что она является частью дерева базы кода. И дерево базы кода является частью VC/SVN. Следовательно, любое изменение в локальном /dev переходит к производству. Сохранение настройки переменной env в httpd.conf избавляет вас от осторожности, чтобы не случайно перезаписать флаг vs dev. Если, конечно, вы не хотите использовать IP-адрес или имя хоста, оба из которых не являются масштабируемыми.
Я также рассматривал этот тип решения. Я обнаружил, что в Apache вы можете использовать SetEnv KeyName DataValue
в http.conf, а в IIS вы можете использовать Fast CGI Settings → Edit... → Environment Variables → ... и добавить KeyName, DataValue
.
Это, в свою очередь, позволяет устанавливать PHP $var = $_SERVER["KeyName"];
в DataValue
и использоваться по мере необходимости как в IIS, так и в Apache последовательно.
Я знаю, что это странный прецедент. Я использую WAMP на работе и MAMP дома, поэтому приятно работать одинаково.