我有一台运行Wordpress 4.2的Linux服务器,我有2个Azure DB,一个是SQL Server,另一个是CleanDB。
Windows服务器
Windows 7专业版/ Windows Server 2012 R2 sp1
Visual Studio 2013
SQL Server 2012 SP1
PHP 5.4 WP 4.2
Linux服务器
CentOS的6.0
WP 4.2
PHP 5.4.31
它运行在SQL Server,Visual Studio上,并且在Windows服务器上与CleanDB和SQL Server的php脚本运行良好,并且当我在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/
https://azure.microsoft.com/en-us/documentation/articles/web-sites-hybrid-connection-connect-on-premises-sql-server/
最佳答案
当我将Linux服务器运行到SQL Server时,它将无法连接。
您是说使用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);
从数据库到数据库的设置,请不要忘记在Azure门户上管理允许的IP地址,即在Azure门户的``允许的IP地址''部分中添加客户端IP地址。 https://msdn.microsoft.com/en-us/library/azure/ee621782.aspx#Troubleshooting
如果您有任何误解,请随时告诉我。
关于php - 如何将具有Wordpress 4.2服务器的Linux服务器连接到具有PHP 5.4的Azure SQL DB?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31215353/