Настройки базы данных Joomla configuration.php, работающие в приложениях Azure и MySql-In
Я запускаю Joomla под Azure, используя опцию MySQL In-App для базы данных. Все прошло хорошо, но мне не удалось получить переменные конфигурации базы данных в JConfig для динамического извлечения из переменной среды MYSQLCONNSTR_localdb.
Я попробовал предлагаемое MS решение, размещенное здесь https://blogs.msdn.microsoft.com/azureossds/2016/12/09/mysql-in-app-configuration-for-php-content-management-systems/, и пробовали различные способы извлечения информации из переменной среды и установки переменных в результаты, но все безуспешно. Единственная вещь, которая, кажется, работает - это жесткое кодирование адреса хоста, что... проблематично.
Примером может быть что-то вроде этого:
class JConfig {
...
$hostVar = getenv("MYSQLCONNSTR_localdb");
$hostArray = array();
foreach( explode( ';', $hostVar ) as $substr )
{
$asplode = explode('=', $substr);
$hostArray[ $asplode[0] ] = $asplode[1];
}
public $host = $hostArray['Data Source'];
...
До сих пор все варианты жестко закодированного адреса были "Ошибка". на переднем конце.
0 ответов
Я переместил назначение в конструктор класса JConfig. С этим я могу его красиво докеррировать.
class JConfig {
public $smtpuser;
public $smtppass;
public $smtphost;
public $host;
public $user;
public $password;
public $db;
function __construct() {
$this->smtpuser = getenv('SMTP_USER');
$this->smtppass = getenv('SMTP_PASSWORD');
$this->smtphost = getenv('SMTP_HOST');
$this->host = getenv('JOOMLA_DB_HOST');
$this->user = getenv('JOOMLA_DB_USER');
$this->password = getenv('JOOMLA_DB_PASSWORD');
$this->db = getenv('JOOMLA_DB_NAME');
}