2013-11-22 1 views
0

У нас есть локальная среда MAMP, а также серверы разработки и производства, которые используют разные учетные данные MySQL.Как настроить различные серверные среды для учетных данных MySQL CMS

Мы пытаемся установить инструкцию в файле config.php нашего CMS, который использует правильные учетные данные на основе среды.

В заявлении мы в настоящее время выглядит следующим образом:

<?php 
    if ($_SERVER['HTTP_HOST'] == 'domain.com') { // PRODUCTION Server 
    define('DB_SERVER', 'localhost'); 
    define('DB_USERNAME', 'db-user'); 
    define('DB_PASSWORD', 'db-password'); 
    define('DB_DATABASE', 'db-name'); 
     } else if ($_SERVER['HTTP_HOST'] == 'domain.devserver.com') { // DEV Server 
     define('DB_SERVER', 'localhost'); 
     define('DB_USERNAME', 'db-user'); 
     define('DB_PASSWORD', 'db-password'); 
     define('DB_DATABASE', 'db-name'); 
     } else { // MAMP 
     define('DB_SERVER', 'localhost'); 
     define('DB_USERNAME', 'db-user'); 
     define('DB_PASSWORD', 'db-password'); 
     define('DB_DATABASE', 'db-name'); 
     } 
?> 

Но только последний набор учетных данных (MAMP) когда-либо привыкает - есть способ сделать это в одном файле PHP?

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

Мы знаем очень мало php - любая помощь или указатели в правильном направлении была бы высоко оценена.

Приветствия

Бен

+0

Это довольно простой PHP. Там не так много места для «странных вопросов». Довольно ясно, что переменная HTTP_HOST не соответствует ни домену, ни домену.devserver.com. добавьте 'var_dump ($ _ SERVER ['HTTP_HOST']) вверху и запустите его несколько раз на целевых серверах. Я гарантирую, что когда это не сработает, результат будет чем-то другим (возможно, как www.domain.com). –

ответ

0

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

switch ($_SERVER['HTTP_HOST']) { 
case "domain.com": 
    define('DB_SERVER', 'localhost'); 
    define('DB_USERNAME', 'db-user'); 
    define('DB_PASSWORD', 'db-password'); 
    define('DB_DATABASE', 'db-name'); 
    break; 
case "domain.devserver.com": 
    define('DB_SERVER', 'localhost'); 
    define('DB_USERNAME', 'db-user'); 
    define('DB_PASSWORD', 'db-password'); 
    define('DB_DATABASE', 'db-name'); 
    break; 
default: 
    define('DB_SERVER', 'localhost'); 
    define('DB_USERNAME', 'db-user'); 
    define('DB_PASSWORD', 'db-password'); 
    define('DB_DATABASE', 'db-name'); 
    break; 
} 
+0

Спасибо, кучи - да, я действительно пробовал и то и другое, и иногда это работает, а иногда и нет. Я не уверен, что на сервере есть что-то, что помешало бы работать, но я трижды проверял учетные данные mysql, поэтому я уверен, что это не проблема. Сегодня я попробую версию коммутатора - спасибо кучам. – CMSCSS

+0

Иногда это работает, иногда это не так? это работает для определенных серверов, а не для других? – BGundlach

+0

Да, я думаю, нам нужно отслеживать, почему это не работает, возможно, может быть проблема с разрешениями пользователей MySQL, может быть? Cheers – CMSCSS

Смежные вопросы