Joomla配置.php数据库设置在Azure和MySql-In App下运行。

问题描述 投票:0回答:1

我在Azure下运行Joomla,数据库使用MySQL In-App选项。一切都很顺利,但我一直无法让JConfig中的数据库配置变量从MYSQLCONNSTR_localdb环境变量中动态提取。

我已经尝试了这里发布的MS建议的解决方案 https:/blogs.msdn.microsoft.comazureossds20161209mysql-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'];
...

到目前为止,所有硬编码地址的变化都是 "Error." 在前端。

php mysql joomla azure-mysql-database
1个回答
0
投票

我把赋值移到了JConfig类的构造函数中。有了这个,我就能很好地实现docker化了。

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');
  }
© www.soinside.com 2019 - 2024. All rights reserved.