我有一台运行Wordpress 4.2的Linux服务器,我有2个Azure DB,一个是SQL Server,另一个是CleanDB。
Windows Server
Linux服务器
它运行在我的Windows服务器上的SQL服务器,visual studio和我的php脚本上,运行CleanDB和SQL Server运行正常,当我在Linux服务器上运行连接字符串到CleanDB时。
当我将Linux服务器运行到SQL服务器时,它将无法连接。
我只允许数据库允许4次调用而且它没有拉动。 IP范围已添加到防火墙上。
我在所有实例中都使用完全相同的字符串。
我发现了一些其他一些有用的问题:
SO参考文献:
Cannot connect to azure db via SqlConnection
"Call to undefined function sqlsrv_connect()" when trying to connect to Azure DB from PHP
MSDN参考:
https://azure.microsoft.com/en-us/documentation/articles/sql-database-php-how-to-use/
答案 0 :(得分:0)
当我将Linux服务器运行到SQL服务器时,它将无法连接。
您是说在使用sqlsrv驱动器时无法从Linux服务器连接到SQL Azure?请注意,SqlSrv是Windows驱动程序,在Linux上我们可以使用PDO_DBLIB驱动器和PDO_ODBC(不推荐),更详细的信息可以在http://php.net/manual/en/ref.pdo-dblib.php找到。
使用PDO_DBLIB作为参考代码片段:
<?php
$dbHost = 'YourName.database.windows.net';
$dbUser = 'DBUserName';
$dbPass = 'DB Password';
$dbName = 'DB Name';
try {
$pdo = new PDO("dblib:host=$dbHost:1433;dbname=$dbName", $dbUser, $dbPass);
} catch (PDOException $e) {
echo "Failed to get DB handle: " . $e->getMessage() . "\n";
exit;
}
使用PDO_ODBC作为参考代码段:
$connection = odbc_connect("Driver={SQL Server};Server=$dbHost; Database=$dbName;", $dbUser, $dbPass);
$qry = "SELECT * FROM Clienti";
$result = odbc_exec($connection,$qry);
// Get Data From Result
while ($data[] = odbc_fetch_array($result));
// Free Result
odbc_free_result($result);
// Close Connection
odbc_close($conn);
// Show data
print_r($data);
AS对数据库设置,请不要忘记在Azure门户上管理允许的IP地址,即在Azure门户的“允许的IP地址”部分中添加客户端IP地址。 https://msdn.microsoft.com/en-us/library/azure/ee621782.aspx#Troubleshooting
如果我对您的问题有任何误解,请随时告诉我。