如何从Linux服务器连接Azure中的sql Server与Php?

时间:2016-03-15 09:20:43

标签: php sql azure azure-sql-database

我一直在为我的Android应用程序使用azure移动服务。 然后我想使用Php。

使用我的Localhost和远程服务器访问我的数据库数据

我尝试了以下Azure文档提供的代码。

$conn = new PDO ( "sqlsrv:server = tcp:MYSERVERNAME.database.windows.net,1433; Database = MY_DATABASE_NAME", "MY_USER_NAME", "MY_PASSWORD" );
try {
    $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

} catch ( PDOException $e ) {
    print( "Error connecting to SQL Server." );
    die( print_r( $e ) );

};

当代码在Localhost或远程服务器上运行时,即Linux服务器,我收到错误

enter image description here

修改

我认为这是关于Azure防火墙规则的,我在服务器

的Azure防火墙规则中添加了我的IP号码

当我尝试通过SQLPro连接到服务器时,我可以成功连接并开始查询。但我不能通过Localhost与我的Php代码连接。

3 个答案:

答案 0 :(得分:4)

您使用的函数PDO sqlsrv:server需要SQLSRV extension php_pdo_sqlsrv_53_nts.dll,但它只与在Windows上运行的PHP兼容。

要在Unix中使用PHP连接到SQL服务器,可以使用ODBC扩展名和Microsoft's SQL Server ODBC Driver for Linux

您可以参考http://php.net/manual/en/ref.pdo-sqlsrv.php了解详情。

答案 1 :(得分:1)

从Linux服务器连接Azure SQL DB的另一个建议是使用sqlshim。 sqlshim项目旨在在Linux / OS X上复制用于PHP的Microsoft SQL Server驱动程序(sqlsrv)。

以下是该项目的链接:https://github.com/radsectors/sqlshim

以下是如何安装它:

Download the latest release from: https://github.com/radsectors/sqlshim/releases
Extract src/sqlshim.php and src/globals.php.
Include it.
require 'src/sqlshim.php';

干杯,
符合

答案 2 :(得分:-1)

您是否将防火墙例外添加到数据库或数据库实例?

实例级别(在主服务器上运行):

EXECUTE sp_set_firewall_rule N'my_rule','123.0.0.1','123.0.0.1'; 
--EXECUTE sp_set_firewall_rule N'rule_name','IP_Range_low','IP_Range_high'; 

数据库级别(在目标数据库上运行):

EXECUTE sp_set_database_firewall_rule N'my_db_rule'; 
,'123.0.0.1'  --IP_Range_low
,'123.0.0.1'  --IP_Range_high