![](/img/trans.png)
[英]How does Azure override a MySQL connection string in a php application?
[英]Error in connection string, PHP with MySQL deployed in Azure
我在一個項目中工作,該項目包括在 Azure 中部署 PHP 網站並與 Azure MySQL 連接。
我首先在 Azure MySQL 中創建和遷移數據。 我還創建了 PHP 網站並部署了代碼,但是當在 Web 應用程序的配置部分添加連接字符串時,它給了我一個錯誤:
value 是所有連接字符串的必需屬性
連接字符串:
$con=mysqli_init(); [mysqli_ssl_set($con, NULL, NULL, {ca-cert filename}, NULL, NULL);] mysqli_real_connect($con, {your_host}, {username@servername}, {your_password}, {your_database}, {your_port});
我無法保存連接字符串,因為錯誤在連接字符串選項卡下方顯示為紅色。
因為我沒有使用 PHP 和 MySQL 的經驗,所以我用谷歌搜索了錯誤但沒有找到任何東西。
如果要在Azure web app中添加my sql連接字符串,請參考以下步驟
啟用從 Azure 應用服務到 MySQL 的 Azure 數據庫的訪問
Azure Database for MySQL 使用防火牆保護數據提供訪問安全性。 從 Azure 應用服務連接到 Azure Database for MySQL 服務器時,請記住,應用服務的出站 IP 本質上是動態的。 選擇“允許訪問 Azure 服務”選項將允許應用服務連接到 MySQL 服務器。
使用 php 連接 Azure MySQL
<?php
$connectstr_dbhost = '';
$connectstr_dbname = '';
$connectstr_dbusername = '';
$connectstr_dbpassword = '';
foreach ($_SERVER as $key => $value) {
if (strpos($key, "MYSQLCONNSTR_") !== 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);
}
$conn = mysqli_init();
mysqli_ssl_set($conn,NULL,NULL, "D:/home/site/wwwroot/Cert/BaltimoreCyberTrustRoot.crt.pem", NULL, NULL) ;
mysqli_real_connect($conn, $connectstr_dbhost, $connectstr_dbusername, $connectstr_dbpassword, $connectstr_dbname, 3306, MYSQLI_CLIENT_SSL);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}
echo "Success: A proper connection to MySQL was made! The database is great." . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($conn) . PHP_EOL;
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.