我正在努力将Drupal(7.43)应用程序(托管在PHP 5.4服务器上)连接到Microsoft Azure SQL数据库。
我真的很沮丧,甚至发现自己和公司的DBA争吵why did you install this database on the newest version of SQL Server?
。
我之所以问的原因是因为Microsoft官方文档说如果PHP服务器版本低于7. *,则将不应连接链接到SQL Servers的较新版本。
用于SQL Server的PHP Microsoft驱动程序的系统要求https://docs.microsoft.com/en-us/sql/connect/php/system-requirements-for-the-php-sql-driver?view=sql-server-ver15#driver-versions
根据本文,如果PHP服务器版本为5.4,则该PHP服务器的官方MS驱动程序为3.2版本。因此,如果SQL Server驱动程序为3.2,则不应连接到高于2014的SQL Server版本。
我使用FreeTDS将5.4 PHP应用程序连接到Azure SQL Server! Yaay
FreeTDS是对Sybase和Microsoft SQL Server最初销售的C库的重新实现。它允许许多开源应用程序,例如Perl和PHP(或您自己的C或C ++程序)连接到Sybase或Microsoft SQL Server。
我的操作系统是CentOS 7。
我为HTTP服务器和php数据库连接安装了基本的yum软件包。
yum install httpd httpd-tools php php-common php-cli php-odbc php-pdo unixODBC unixODBC-devel
到目前为止,我了解:
好的,然后我安装了FreeTDS:
yum install epel-release
yum check-update
yum install freetds freetds-devel
然后我有/etc/freetds.conf
:
[MYCLIENT]
host = myclient.database.edtech.com
port = 6669
tds version = 8.0 # Btw, how important is this version for old PHP servers versus new SQL servers?
我也有/etc/odbcinst.ini
[FreeTDS]
Driver = /lib64/libtdsodbc.so.0
FileUsage = 1
此外,我有/etc/odbc.ini
:
[MSSQLServer]
Driver = FreeTDS # Yes, ODBC will use FreeTDS, I get it.
Description = MSSQL Server
Trace = Yes
Server = myclient.database.edtech.com
Port = 6669
TDS_Version = 7.1 # Shouldn't this be same as the version in /etc/freetds.conf?
Database = ApplicationDB
您说过
之所以这样问,是因为Microsoft的官方文档说,如果我的PHP版本低于7. *,则无法连接到较新的SQL Server版本。
和
此php 5.4连接是否确实应该与最新的SQL一起使用?尽管有官方的Microsoft文档,服务器仍不支持?
...但是实际上,Microsoft documentation you're talking about并不表示您无法从PHP 5.4连接到SQL Server。
他们说您不能(或至少不支持您)通过使用用于SQL Server的PHP的Microsoft驱动程序]来做到这一点-这是文档所讨论的特定产品。
FreeTDS是不同的驱动程序。通过替换驱动程序,您已经替换了Microsoft所说的不应该使用的东西。 AFAIK Microsoft不参与FreeTDS,因此它们所支持的内容以及其驱动程序的作用完全取决于他们。