为了较旧的PHP和较新的SQL Server之间的兼容性,应该使用FreeTDS驱动程序而不是MS SQL驱动程序吗?

问题描述 投票:0回答:1

我正在努力将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版本。

Relation between php server and ms sql driver compatibility

TL; DR;

我使用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

到目前为止,我了解:

  • PDO代表PHP数据对象
  • ODBC代表Open Database Connectivity –这是用于访问数据库管理系统的标准应用程序编程接口。

好的,然后我安装了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

结论

  • 我希望这个问题对其他人有帮助。
  • FreeTDS是另一个驱动程序比微软的
  • PHP不了解FreeTDS,FreeTDS不知道关于PHP版本。
  • 据我从答案中了解到,它们之间的ODBC桥接器/层。
  • 最好使用最新的FreeTDS版本以确保连接正常。
php sql-server odbc database-administration freetds
1个回答
2
投票

您说过

之所以这样问,是因为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,因此它们所支持的内容以及其驱动程序的作用完全取决于他们。

© www.soinside.com 2019 - 2024. All rights reserved.