Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Ubuntu上的PHP连接到SQL Azure_Php_Sql Server_Azure_Azure Sql Database_Ubuntu 11.04 - Fatal编程技术网

从Ubuntu上的PHP连接到SQL Azure

从Ubuntu上的PHP连接到SQL Azure,php,sql-server,azure,azure-sql-database,ubuntu-11.04,Php,Sql Server,Azure,Azure Sql Database,Ubuntu 11.04,我正试图通过运行在Ubuntu11.04服务器上的PHP连接到SQLAzure数据库 服务器正在运行PHP版本=>5.3.5-1ubuntu7.11 我已经多次使用apt get install安装了freetds bin、freetds common、tdsodbc、odbcinst、php5 odbc和unixodbc。我试图用SSL支持编译FreeTDS,但不确定是否成功 此时,我在尝试使用isql工具连接时收到一个错误“08S01-通信链路故障”。Microsoft的一篇文章将此错误解释

我正试图通过运行在Ubuntu11.04服务器上的PHP连接到SQLAzure数据库

服务器正在运行PHP版本=>5.3.5-1ubuntu7.11

我已经多次使用apt get install安装了freetds bin、freetds common、tdsodbc、odbcinst、php5 odbc和unixodbc。我试图用SSL支持编译FreeTDS,但不确定是否成功

此时,我在尝试使用isql工具连接时收到一个错误“08S01-通信链路故障”。Microsoft的一篇文章将此错误解释为“在SqlDriverConnection函数完成处理之前,驱动程序与驱动程序试图连接的数据源之间的通信链接失败。”对此的一些研究特别指出FreeTDS中缺少SSL支持,但我不清楚如何验证已启用

我将使用PHP数据对象或mssql_*函数连接到SQL Azure数据库。我对PDO不太熟悉,但PDO似乎不一定使用ODBC?我不清楚这一点,我怀疑这会导致我对isql遇到的问题进行故障排除,这些问题与我在PHP中看到的问题无关。isql工具的连接问题是否与PHP中PDO或mssql_*函数的连接问题有关

我最新的尝试是使用PDO:

<?php

$c = new PDO("odbc:Driver=FreeTDS;Port=1433;Server=sssssssssss.database.windows.net;Database=db_xxxxx_xxx_xxx;UID=db_xxxxx_xxx_xxx_ExternalWriter;PWD=ppppppppp");

?>
/etc/odbc.ini:

[TS]
Description             = "test"
Driver                  = FreeTDS
Server                  = sssssssssssss.database.windows.net
Port                    = 1433
Database                = db_xxxxxxx_xxx_xxx
/etc/odbcinst.ini

[FreeTDS]
Description     = tdsodbc
Driver          = /usr/lib/odbc/libtdsodbc.so

如果能帮上忙,我们将不胜感激。我显然在这一点上迷路了。谢谢

我没有专门在Azure上试用过,但在我们这里使用的本地SQL Server机器上,我发现带有PDO的php5 sybase模块比freetds更容易使用:

apt-get install php5-sybase

<?php
$dsn = 'dblib:dbname=TestDB;host=sqlserver;charset=UTF-8';
$dbh = new PDO($dsn, 'username', 'password');
apt get install php5 sybase

在配置FreeTDS和安装FreeTDS时,我遵循了FreeTDS文档。tsql-H sss.database.windows.net-p 1433-U user-p pwd现在返回“无法打开登录请求的服务器'sss'。不允许IP地址为'n.n.n.n'的客户端访问服务器。若要启用访问,请使用windows Azure管理门户或运行…”显然,错误来自Azure,并且连接至少正在进行中。SQL Azure防火墙配置为允许从任何计算机进行连接。
apt-get install php5-sybase

<?php
$dsn = 'dblib:dbname=TestDB;host=sqlserver;charset=UTF-8';
$dbh = new PDO($dsn, 'username', 'password');