Загрузка драйверов Майкрософт для PHP для SQL Server

Эта статья содержит инструкции по загрузке драйверов Майкрософт для PHP для SQL Server в пространство процессов PHP.

Установите драйверы на Windows с помощью PIE

PIE, PHP-установщик для расширений, устанавливает соответствующие заранее скомпилированные драйверные файлы и включает их в командной строке PHP. Windows не нуждается в цепочке инструментов для сборки.

  1. Установите поддерживаемую версию на PHP и драйвер Microsoft ODBC для SQL Server.

  2. Выполните команду php --ini. Если Loaded Configuration File — (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 Foundation:

    gh attestation verify --owner php .\pie.phar
    
  5. Установите оба драйвера, используя исполняемый файл PHP на PATH:

    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

Установите драйверы и зависимости от их платформы с помощью PIE, как описано в учебнике по установке Linux и macOS.

Устанавливайте готовые драйверы вручную

Вы можете скачать готовые драйверы со страницы Microsoft Drivers for PHP for SQL Server. Файл для Windows представляет собой ZIP-архив, содержащий файлы драйверов SQLSRV и PDO_SQLSRV для всех поддерживаемых версий PHP, архитектур и режимов потокобезопасности. Выберите файлы, которые соответствуют вашей 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 по умолчанию, чтобы найти каталог по умолчанию, запустить php -i | sls extension_dir в Windows или php -i | grep extension_dir Linux или macOS. Если вы не используете каталог расширений по умолчанию, укажите каталог в файле конфигурации PHP (php.ini), используя параметр extension_dir . Например, в Windows, если вы помещаете файл драйвера в c:\php\ext каталог, добавьте следующую строку в php.ini:

extension_dir = "c:\PHP\ext"

Загрузка драйвера при запуске PHP

Чтобы загружать драйвер SQLSRV при запуске PHP, сначала поместите файл драйвера в свой каталог расширений. Затем выполните следующие действия:

  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 Data Objects (PDO) — либо как встроенное расширение, либо в виде динамически загружаемого расширения.

    В Windows предварительно созданные двоичные файлы PHP приходят со встроенным PDO, поэтому не нужно изменять php.ini для его загрузки. Однако, если вы скомпилировали PHP из исходного кода и указали построение отдельного расширения PDO, названного php_pdo.dll, необходимо скопировать его в каталог расширений и добавить следующую строку в php.ini:

    extension=php_pdo.dll
    

    В Linux, если вы установили PHP с помощью диспетчера пакетов системы, PDO, вероятно, устанавливается в качестве динамического загруженного расширения с именем pdo.so. Расширение PDO должно быть загружено перед расширением PDO_SQLSRV, иначе произойдет сбой загрузки. Расширения загружаются с помощью отдельных .ini файлов, и эти файлы считываются после php.ini. Таким образом, если файл pdo.so загружается с использованием собственного INI-файла, то после PDO понадобится отдельный файл, загружающий драйвер PDO_SQLSRV.

    Чтобы узнать, в каком каталоге находятся INI-файлы, относящиеся к расширению, запустите php --ini и обратите внимание на каталог, указанный в разделе Scan for additional .ini files in:. Найдите файл, загружающий pdo.so. Он должен быть префиксирован числом, например 10-pdo.ini. Числовый префикс указывает порядок загрузки файлов .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-файлы.

    Если вы скомпилировали PHP из источника со встроенной поддержкой PDO, вам не нужен отдельный .ini файл, и вы можете добавить предыдущую строку в php.ini.

  3. Перезагрузите веб-сервер.

Примечание.

Чтобы определить, успешно ли загружен драйвер, запустите скрипт, вызывающий phpinfo().

Дополнительные сведения о директивах php.ini см. в статье Описание встроенных директив php.ini.