如何使用PHP 5.4将Linux服务器与Wordpress 4.2服务器连接到Azure SQL DB?

时间:2015-07-03 23:38:25

标签: php sql-server linux wordpress azure

我有一台运行Wordpress 4.2的Linux服务器,我有2个Azure DB,一个是SQL Server,另一个是CleanDB。

Windows Server

  • Windows 7 Pro / 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

它运行在我的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/

https://azure.microsoft.com/en-us/documentation/articles/web-sites-hybrid-connection-connect-on-premises-sql-server/

1 个答案:

答案 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

如果我对您的问题有任何误解,请随时告诉我。