本页介绍了如何将 Microsoft Drivers for PHP for SQL Server 加载到 PHP 进程空间中。
在Windows上安装带有PIE的驱动程序
PIE,即 PHP 扩展安装程序,安装匹配的预编译驱动文件,并在 PHP 命令行配置中启用它们。 Windows不需要构建工具链。
运行
php --ini。 如果 加载的配置文件 是(none), php.ini-development 从 PHP 安装目录复制到同一目录中的 php.ini 。在 php.ini中,设置扩展目录并启用
openssl和zip扩展:extension_dir = "ext" extension=openssl extension=zip从可写的工作目录下载最新的稳定版
pie.phar。 该命令在命令提示符和PowerShell中工作:curl.exe -fL --output pie.phar https://github.com/php/pie/releases/latest/download/pie.phar如果你有 GitHub CLI,请确认 PHP 基金会发布了该文件:
gh attestation verify --owner php .\pie.phar使用
PATH上的 PHP 可执行文件安装这两个驱动程序:php .\pie.phar install microsoft/sqlsrv php .\pie.phar install microsoft/pdo_sqlsrv验证同一个PHP命令行运行时是否同时加载两个驱动程序:
php --ri sqlsrv php --ri pdo_sqlsrv
有关其他PIE安装方法,请参见 PIE使用文档。
在Linux和macOS上安装驱动
按照 Linux和macOS安装教程中描述的,使用PIE安装驱动程序及其平台依赖。
手动安装预编驱动
你可以从Microsoft PHP for SQL Server驱动页面下载预构建的驱动程序。 Windows下载是一个ZIP,包含每个支持的PHP版本、架构和线程安全模式的SQLSRV和PDO_SQLSRV驱动文件。 选择与你的PHP环境相匹配的文件。 请参见文件列表的 系统要求 。
还可以在构建 PHP 时或使用 phpize 从源生成驱动程序。 如果选择从源生成驱动程序,则可以通过在生成 PHP 时将 --enable-sqlsrv=static --with-pdo_sqlsrv=static(在 Linux 和 macOS 上)或 --enable-sqlsrv=static --with-pdo-sqlsrv=static(在 Windows 上)添加到 ./configure 命令来将驱动程序静态生成到 PHP 中,而不是将它们生成为共享扩展。 有关 PHP 生成系统和 phpize 的详细信息,请参阅 PHP 文档。
将驱动程序文件移动到扩展目录中
驱动程序文件必须位于 PHP 运行时可以找到它的目录中。 将驱动程序文件放在默认的 PHP 扩展目录中是最简单的选择。要查找默认目录,请在 Windows 上运行php -i | sls extension_dir,或在 Linux/macOS 上运行php -i | grep extension_dir。 如果不使用默认扩展目录,请使用 extension_dir 选项在 PHP 配置文件(php.ini)中指定目录。 例如,在 Windows 上,如果将驱动程序文件 c:\php\ext 放在目录中,请将以下行添加到 php.ini:
extension_dir = "c:\PHP\ext"
在 PHP 启动时加载驱动程序
若要在 PHP 启动时加载 SQLSRV 驱动程序,首先要将驱动程序文件移动到扩展目录中。 然后,按如下步骤操作:
若要启用 SQLSRV 驱动程序,请将以下行添加到扩展部分来修改 php.ini ,根据 PHP 版本和线程安全与非线程安全安装更改文件名:
在 Windows 上:
extension=php_sqlsrv_83_ts.dll在 Linux 上,如果为您的发行版下载了预构建的二进制文件:
extension=php_sqlsrv_83_nts.so如果你是从源码编译了 SQLSRV 二进制文件,或者用 PIE 或 PECL 安装,它的名字是 sqlsrv.so:
extension=sqlsrv.so为了启用 PDO_SQLSRV 驱动,必须提供PHP数据对象(PDO)扩展,既可作为内置扩展,也可以作为动态加载扩展。
在 Windows 上,预生成的 PHP 二进制文件附带了 PDO 内置文件,因此无需修改 php.ini 即可加载它。 但是,如果从源编译 PHP 并指定要生成的单独的 PDO 扩展,其名称为
php_pdo.dll,并且必须将它复制到扩展目录,并将以下行添加到 php.ini:extension=php_pdo.dll在 Linux 上,如果使用系统的包管理器安装了 PHP,则 PDO 可能安装为名为 pdo.so 的动态加载扩展。 必须在PDO_SQLSRV扩展之前加载 PDO 扩展,否则加载将失败。 扩展是使用单个 .ini 文件加载的,这些文件在 php.ini后读取。 因此,如果通过其自己的 .ini 文件加载 pdo.so,则需要一个可在 PDO 之后加载 PDO_SQLSRV 驱动程序的单独文件。
要查找扩展特定的 .ini 文件位于哪个目录,请运行
php --ini并记下Scan for additional .ini files in:下列出的目录。 查找加载 pdo.so 的文件。 它应以数字为前缀,例如 10-pdo.ini。 数字前缀指示 .ini 文件的加载顺序,而没有数字前缀的文件按字母顺序加载。 创建一个文件以加载 PDO_SQLSRV 驱动程序文件,文件名可以是 30-pdo_sqlsrv.ini(任何大于 pdo.ini 前缀数字的数值均可)或 pdo_sqlsrv.ini(如果 pdo.ini 前面没有数字前缀),并在其中添加以下行,同时根据实际情况修改文件名:extension=php_pdo_sqlsrv_3_nts.so和 SQLSRV 一样,如果你是从源码编译PDO_SQLSRV二进制文件,或者用 PIE 或 PECL 安装,它的名称是 pdo_sqlsrv.so:
extension=pdo_sqlsrv.so将此文件复制到包含其他 .ini 文件的目录中。
如果使用内置 PDO 支持从源编译 PHP,则不需要单独的 .ini 文件,并且可以将上一行添加到 php.ini。
重启网页服务器。
注意事项
若要确定驱动程序是否已成功加载,请运行调用 phpinfo() 的脚本。
有关 php.ini 指令的详细信息,请参阅核心 php.ini 指令说明 。