首页 > 解决方案 > 在 Azure 和 MySql-In App 下运行的 Joomla configuration.php 数据库设置

问题描述

我正在使用数据库的 MySQL In-App 选项在 Azure 下运行 Joomla。一切顺利,但我无法让 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'];
...

到目前为止,硬编码地址的所有变体都是“错误”。在前端。

标签: phpmysqljoomlaazure-mysql-database

解决方案


我将分配移至 JConfig 类的构造函数。有了这个,我可以很好地 dockerize 它。

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');
  }

推荐阅读