加载用于 SQL Server 的 PHP Microsoft 驱动程序

本页介绍了如何将 Microsoft Drivers for PHP for SQL Server 加载到 PHP 进程空间中。

在Windows上安装带有PIE的驱动程序

PIE,即 PHP 扩展安装程序,安装匹配的预编译驱动文件,并在 PHP 命令行配置中启用它们。 Windows不需要构建工具链。

  1. 安装受支持的 PHP 版本和适用于 SQL Server 的 Microsoft ODBC 驱动程序。

  2. 运行 php --ini。 如果 加载的配置文件 是 (none), php.ini-development 从 PHP 安装目录复制到同一目录中的 php.ini 。

  3. 在 php.ini中,设置扩展目录并启用 openssl 和 zip 扩展:

    extension_dir = "ext"
    extension=openssl
    extension=zip
    
  4. 从可写的工作目录下载最新的稳定版 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
    
  5. 使用 PATH 上的 PHP 可执行文件安装这两个驱动程序:

    php .\pie.phar install microsoft/sqlsrv
    php .\pie.phar install microsoft/pdo_sqlsrv
    
  6. 验证同一个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 驱动程序,首先要将驱动程序文件移动到扩展目录中。 然后,按如下步骤操作:

  1. 若要启用 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
    
  2. 为了启用 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。

  3. 重启网页服务器。

注意事项

若要确定驱动程序是否已成功加载,请运行调用 phpinfo() 的脚本。

有关 php.ini 指令的详细信息,请参阅核心 php.ini 指令说明 。