我升级到PHP 5.3,注意到php_mssql.dll丢失了。在谷歌搜索了一下之后,似乎5.3已经放弃了对mssql的支持。所以我从微软下载了驱动程序,但我似乎不能使它工作。
我在windows上。在我解压缩PHP 5.3的ext目录中的文件之后,我需要做什么?
引语http://php.net/manual/en/intro.mssql.php:
MSSQL扩展在PHP 5.3或更高版本的Windows上不再可用。SQLSRV是MS SQL的另一种驱动程序,可从Microsoft:»http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx获得。
下载后,请按照本页的说明操作:
- 加载SQL Server PHP的Microsoft驱动程序
简而言之:
把驱动文件放在PHP扩展目录下。修改php.ini文件以包含驱动程序。例如:
extension=php_sqlsrv_53_nts_vc9.dll
重启Web服务器。
参见(copy from the page)
- 系统要求(Microsoft Drivers for PHP for SQL Server)
- 开始
- 编程指南
- SQLSRV驱动API参考(Microsoft Drivers for PHP for SQL Server)
SQLSRV扩展的PHP手册位于http://php.net/manual/en/sqlsrv.installation.php,并提供以下安装:
SQLSRV扩展通过向PHP扩展目录添加适当的DLL文件和向PHP .ini文件添加相应的条目来启用。SQLSRV下载附带了几个驱动程序文件。您使用哪个驱动程序文件将取决于3个因素:您正在使用的PHP版本,您使用的是线程安全的还是非线程安全的PHP,以及您的PHP安装是使用VC6还是VC9编译器编译的。例如,如果您正在运行PHP 5.3,使用非线程安全的PHP,并且您的PHP安装是用VC9编译器编译的,那么您应该使用php_sqlsrv_53_nts_vc9.dll文件。(如果您使用IIS作为web服务器,则应该使用使用VC9编译器编译的非线程安全版本)。如果您正在运行PHP 5.2,您正在使用线程安全的PHP,并且您的PHP安装是用VC6编译器编译的,那么您应该使用php_sqlsrv_52_ts_vc6.dll文件。
驱动程序也可以与PDO一起使用
下载Microsoft PHP for SQL Server驱动程序。解压缩文件并使用以下命令之一:
File Thread Safe VC Bulid
php_sqlsrv_53_nts_vc6.dll No VC6
php_sqlsrv_53_nts_vc9.dll No VC9
php_sqlsrv_53_ts_vc6.dll Yes VC6
php_sqlsrv_53_ts_vc9.dll Yes VC9
你可以在phpinfo()中看到线程安全状态。
将正确的文件添加到ext目录中,并将以下行添加到php.ini中:
extension=php_sqlsrv_53_*_vc*.dll
使用您使用的文件的文件名。
正如Gordon已经发布的,这是微软的新扩展,使用sqlsrv_* API而不是mssql_*
更新:
在Linux上,您没有必要的驱动程序,也没有SQLSERV扩展。
看看连接到MS SQL服务器从PHP在Linux上?来讨论这个问题。
简而言之,你需要安装FreeTDS ,是的,你需要在linux上使用mssql_* functions。参见更新2
从长远来看,为了简化事情,我建议创建一个带有必要函数的包装器类,这些函数根据加载的扩展使用适当的API (sqlsrv_*或mssql_*)。
更新2:linux下不需要使用mssql_*函数。您可以使用PDO + ODBC + FreeTDS连接到ms sql服务器。在windows上,性能最好的连接方法是通过PDO + ODBC + SQL Native Client,因为PDO + SQLSRV驱动程序可能会非常慢。
确保在这里下载SQL驱动程序https://learn.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15
然后移动与php版本相同的两个文件。(检查PHP -v)
在我的例子中,我使用的是7.4.30版本,并移动了php_pdo_sqlsrv_74_nts_x64.dll和Php_sqlsrv_74_nts_x64.dll到我的PHP文件夹ext
C:'Program Files'php7.4.30'ext
然后打开php.ini文件并添加扩展名,记得包含".dll";
extension=php_pdo_sqlsrv_74_nts_x64.dll
extension=php_sqlsrv_74_nts_x64.dll
如果您仍然有问题,请扩展dir = "ext"在php.ini中,将ext替换为ext文件夹的确切路径,如下所示:
extension_dir = "C:'Program Files'php7.4.30'ext'"