Как использовать строку подключения Mysql внутри кода PHP, который обслуживается службой приложений Azure Lunix - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь разместить службу Wordpress для службы приложений Azure lunix.

Я создал базу данных Azure для MySQL, затем получил строку подключения веб-приложения на экране строк подключения.

Azure Database for MySQL Connection Strings

Формат строки подключения:

Database={your_database}; Data Source={data_source}; User Id= {user_id}; Password={your_password}

Затем я создал службу приложений на основе Linux и добавил строку подключения MySQL в ее конфигурацию.

App service Configuration

Затем я использовал этот код в wp-config.php, чтобы получить строку подключения к базе данных из переменной среды PHP MYSQLCONNSTR_bridgesConnection

<?php

$connectstr_dbhost = '';
$connectstr_dbname = '';
$connectstr_dbusername = '';
$connectstr_dbpassword = '';

foreach ($_SERVER as $key => $value) {
    echo $key ;
 if (strpos($key, "MYSQLCONNSTR_bridgesConnection") !== 0) {
 continue;
 }


 $connectstr_dbhost = preg_replace("/^.*Data Source=(.+?);.*$/", "\\1", $value);
 $connectstr_dbname = preg_replace("/^.*Database=(.+?);.*$/", "\\1", $value);
 $connectstr_dbusername = preg_replace("/^.*User Id=(.+?);.*$/", "\\1", $value);
 $connectstr_dbpassword = preg_replace("/^.*Password=(.+?)$/", "\\1", $value);
}

Этот код работает, если вы используете Windows App Service.Но если вы используете службу приложений Linux, вы получите это предупреждение, и WordPress не будет работать

Предупреждение: mysqli_real_connect (): (HY000 / 2002): такого файла или каталога в / wordpress / нетwp-includes / wp-db.php в строке 1452

Я создал страницу информации php, используя этот код

<?php
phpinfo();
?>

Я уверен, что переменная среды PHP загруженано мне нужен способ доступа к нему.

PHP info page

Как получить доступ к этой строке подключения в коде PHP?

1 Ответ

0 голосов
/ 06 мая 2019

После очень долгого поиска я нашел единственный способ сделать это - использовать функцию getenv.

Окончательный код в wp-config.php будет:

$connectstr_dbhost = '';
$connectstr_dbname = '';
$connectstr_dbusername = '';
$connectstr_dbpassword = '';

$value = getenv('MYSQLCONNSTR_bridgesConnection');

 $connectstr_dbhost = preg_replace("/^.*Data Source=(.+?);.*$/", "\\1", $value);
 $connectstr_dbname = preg_replace("/^.*Database=(.+?);.*$/", "\\1", $value);
 $connectstr_dbusername = preg_replace("/^.*User Id=(.+?);.*$/", "\\1", $value);
 $connectstr_dbpassword = preg_replace("/^.*Password=(.+?)$/", "\\1", $value);


// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', $connectstr_dbname);

/** MySQL database username */
define('DB_USER', $connectstr_dbusername);

/** MySQL database password */
define('DB_PASSWORD', $connectstr_dbpassword);

/** MySQL hostname : this contains the port number in this format host:port . Port is not 3306 when using this feature*/
define('DB_HOST', $connectstr_dbhost);
...