请注意,Microsoft 已为此发布了 PHP7 扩展,但如果您仍在使用 PHP5.x,那对您没有帮助。我已经成功地使用不同的堆栈进行连接:freetds、odbc、pdo。
我正在使用 OS X 10.11.6 (El Capitan) 和 Macports,PHP5.6。
我首先创建了一个 Azure SQL 数据库,该数据库mydb
在名为myserver.database.windows.net
. 重要的是要记住打开防火墙到您的客户端 IP 地址,您在服务器上执行此操作。
第一步是使用 ODBC 驱动程序及其 PHP 连接器安装 freetds(将 php56 更改为您的 PHP 的正确版本):
sudo port install freetds +odbc
sudo port install php56-odbc
接下来,您需要在配置文件中包含一些行:
/opt/local/etc/odbcinst.ini
[FreeTDS]
Description = ODBC for FreeTDS
Driver = /opt/local/lib/libtdsodbc.so
Setup = /opt/local/lib/libtdsodbc.so
FileUsage = 1
这告诉 odbc 库在哪里可以找到它的 odbc 驱动程序。
/opt/local/etc/freetds/freetds.conf
[myserver]
host = myserver.database.windows.net
port = 1433
tds version = 7.0
这告诉 freetdc 库在哪里可以找到您的服务器。
/opt/local/etc/odbc.ini
[myds]
Description = Test for SQL Server on Azure
Driver = FreeTDS
Trace = Yes
TraceFile = /var/log/sql.log
Database = mydb
Servername = myserver
UserName = myusername
Password = mypassword
Port = 1433
Protocol = 7.0
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
这将创建一个名为myds
指向您的数据库的数据源,使您能够连接以下 PHP:
$conn = new PDO('odbc:myds', 'myusername', 'mypassword');
如果其中任何一个对您不起作用,请首先使用以下命令检查 freetds 安装是否正确:
tsql -S myserver -U myusername -P mypassword
然后使用以下命令检查 ODBC 规范是否正常:
isql -v myds myusername mypassword
感谢https://github.com/lionheart/django-pyodbc/wiki/Mac-setup-to-connect-to-a-MS-SQL-Server,它为 Python 完成了同等的工作,并指出了我的正确方向这一切的方向。