Requisitos de sistema para os Microsoft Drivers for PHP para SQL Server

Descarregar o driver PHP

Este artigo lista os componentes que deve instalar no seu sistema para aceder a dados em SQL Server ou Base de Dados SQL do Azure usando o controlador SQLSRV ou PDO_SQLSRV.

Para mais informações sobre os ciclos de vida de suporte e os requisitos dos drivers PHP, consulte a matriz de suporte. Os drivers SQLSRV e PDO_SQLSRV em cada versão têm os mesmos requisitos de PHP, sistema operativo, arquitetura, segurança de threads e ODBC.

Como a pilha de drivers se encaixa

Uma aplicação PHP não se liga diretamente ao servidor da base de dados. Cada camada deve ser compatível com a camada adjacente:

Camada O que selecionas ou configuras Como é um desajuste
Application Funções SQLSRV ou classes e atributos PDO_SQLSRV Funções indefinidas, drivers PDO indisponíveis ou erros ao nível da aplicação
Extensão PHP SQLSRV e ficheiros PDO_SQLSRV construídos para a versão secundária do PHP, arquitetura e modo de segurança de threads Aviso de arranque do PHP, falha no carregamento do módulo ou crash do processo
runtime do PHP Configuração da interface de linha de comandos (CLI), do módulo Apache, do PHP-FPM ou do IIS FastCGI A CLI carrega os drivers, mas a aplicação web não os carrega
Microsoft ODBC Driver Uma versão suportada pela edição selecionada do controlador PHP Falhas de ligação ou uma biblioteca ODBC em falta
Sistema Operativo Uma versão e arquitetura suportadas com pacotes de execução e compilação necessários Nenhum pacote compatível, biblioteca partilhada não resolvida ou falha na compilação do código-fonte
Produto de base de dados Um SQL Server ou SQL do Azure de destino suportado Erros específicos da versão do servidor ou de funcionalidades após o estabelecimento de uma ligação

SQLSRV e PDO_SQLSRV fornecem diferentes APIs PHP sobre o mesmo driver ODBC. Instala ambos quando a tua aplicação usar ambas as APIs. Instalar uma extensão não instala nem ativa automaticamente a outra.

API Modelo de programação Verificação específica da instalação
SQLSRV Funções procedurais sqlsrv_* e constantes SQLSRV extension_loaded('sqlsrv') e function_exists('sqlsrv_connect')
PDO_SQLSRV Classes, atributos e exceções dos PHP Data Objects (PDO) extension_loaded('pdo_sqlsrv') e sqlsrv em PDO::getAvailableDrivers()

As extensões podem ser instaladas de forma independente. PDO_SQLSRV também exige que o PDO carregue antes de PDO_SQLSRV.

Escolha um conjunto compatível

Antes de descarregar ou construir um controlador, complete estas verificações:

  1. Identifique todos os ambientes de execução PHP que servem a aplicação. Uma tarefa agendada, um worker de linha de comandos, um site IIS, um módulo Apache e um pool PHP-FPM podem usar diferentes executáveis PHP e ficheiros de configuração.

  2. Execute o seguinte comando com cada executável PHP:

    php -i | findstr /I "PHP Version Architecture Thread Safety extension_dir"
    

    No Linux ou macOS, use:

    php -i | grep -E "PHP Version|Thread Safety|extension_dir"
    file "$(php -r 'echo PHP_BINARY;')"
    

    O file comando reporta a arquitetura do executável. Se reportar um executável universal do macOS, selecione explicitamente a arquitetura pretendida, como arch -arm64 php --version ou arch -x86_64 php --version. Utilize a mesma seleção de arquitetura ao construir, carregar e testar as extensões.

  3. Selecione uma versão de driver PHP que suporte a versão secundária do PHP, o sistema operativo e o destino da base de dados.

  4. Selecione uma versão suportada do driver Microsoft ODBC a partir da tabela de compatibilidade neste artigo.

  5. Associe o ficheiro de extensão ou a compilação PIE à arquitetura do PHP e ao modo de segurança de execução (thread safety). Não copie uma extensão de outra instalação PHP a menos que todos estes valores coincidam.

  6. Configure e verifique separadamente os ambientes de execução da CLI e do servidor web. Um comando bem-sucedido php -m prova apenas que o runtime CLI carregou a extensão.

PHP

Descarregue binários PHP no site do PHP. Escolha uma versão PHP listada no suporte a versões PHP.

Segurança e arquitetura de threads

A compilação e o ficheiro de extensão PHP devem concordar em ambos os valores.

Valor PHP Seleção obrigatória do controlador
Thread Safety => enabled Ficheiro de driver thread-safe (ts ou TS)
Thread Safety => disabled Ficheiro de driver não seguro para threads (nts ou NTS)
Architecture => x64 ficheiro de driver de 64 bits e componentes ODBC de 64 bits
Architecture => x86 ficheiro do driver Windows de 32 bits e componentes ODBC de 32 bits

A CLI pode usar uma build PHP thread-safe ou não-thread-safe. Selecione a extensão pelo valor reportado e não assuma que todas as builds CLI não são seguras para threads.

controlador ODBC

Instale um driver Microsoft ODBC suportado para SQL Server no computador que executa PHP. Descarregue o driver em Download ODBC Driver for SQL Server.

Se estiver a descarregar a versão Windows do driver numa versão de 64 bits, o instalador ODBC de 64 bits instala tanto os drivers ODBC de 32 bits como os de 64 bits. Se usares uma versão do Windows de 32 bits, usa o instalador ODBC x86. Em plataformas não Windows, apenas versões de 64 bits do driver estão disponíveis.

A tabela inclui combinações históricas para planeamento de atualizações. Utilize a versão atual do controlador PHP e as versões ODBC listadas para uma nova instalação. A compatibilidade com uma versão mais antiga não prolonga o seu ciclo de vida de suporte. Verifique tanto o ciclo de vida do suporte ao driver PHP como as versões suportadas pelo PHP.

Uma célula vazia não significa que o driver PHP rejeite necessariamente essa versão ODBC. Funcionalidades individuais podem exigir versões ODBC mais recentes do que a combinação base.

Versão do driver PHP →
↓ Versão do driver ODBC
5.13 5.12 5.11 5.10 5.9 5.8 5.6 5.3 5.2 4.3 4.0 3.2
Driver ODBC 18 Yes Yes Yes Yes
Driver ODBC 17 Yes Yes Yes Yes Yes Yes Yes Yes Yes
Driver ODBC 13.1 Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Driver ODBC 13 Yes
Driver ODBC 11 Yes Yes Yes Yes Yes Yes Yes

Se estiver a usar o driver SQLSRV, sqlsrv_client_info devolve informações sobre qual versão do SQL Server Microsoft ODBC Driver for SQL Server está a ser usada pelos Microsoft Drivers para PHP for SQL Server. Se estiveres a usar o driver PDO_SQLSRV, podes usar PDO::getAttribute para descobrir a versão.

SQL Server

Para versões suportadas do SQL Server, veja Versões da base de dados suportadas.

Avalie separadamente o suporte ao destino para SQL Server, Base de Dados SQL do Azure, Azure SQL Managed Instance, Azure Synapse Analytics, base de dados SQL no Microsoft Fabric e Warehouse no Microsoft Fabric. Os requisitos de instalação são requisitos do lado do cliente e não estabelecem que todos os métodos de autenticação, opções de ligação, funcionalidades Transact-SQL (T-SQL) ou tipos de dados estejam disponíveis em todos os alvos. Utilize a matriz de suporte e a documentação do produto alvo para o cenário que a sua aplicação utiliza.

Sistemas operacionais

Para sistemas operativos suportados, veja Sistemas operativos suportados.

Versões do driver

Cada versão dos Microsoft Drivers para PHP para SQL Server disponibiliza ficheiros dos controladores SQLSRV e PDO_SQLSRV em variantes thread-safe e não-thread-safe. No Windows, cada variante também é construída para PHP de 32 e 64 bits. Faça corresponder o ficheiro do controlador à sua versão do PHP, ao modo de segurança de execução e à arquitetura. Para ativar um ficheiro de controlador após o descarregar, consulte Carregar os Controladores Microsoft para PHP para SQL Server.

No Linux e macOS, instale os drivers com o PIE, o Instalador PHP para Extensões, conforme descrito nas instruções de instalação do Linux e macOS. O PIE substitui o sistema obsoleto de pacotes PHP Extension Community Library (PECL) e dá à extensão instalada o nome sqlsrv.so ou pdo_sqlsrv.so. As tabelas seguintes listam os nomes dos ficheiros dos pacotes binários pré-construídos que descarrega manualmente da página Microsoft Drivers for PHP for SQL Server releases.

As tabelas seguintes listam os ficheiros nos pacotes de lançamento 5.13. Nos nomes de ficheiros, ts e TS significam thread-safe, e nts e NTS significam não-thread-safe.

Ficheiros de controladores do Windows

O Windows_5.13.xRTW.zip pacote contém estes ficheiros.

ficheiro SQLSRV ficheiro PDO_SQLSRV Versão de PHP Seguro para rosca? Architecture
php_sqlsrv_83_nts_x86.dll php_pdo_sqlsrv_83_nts_x86.dll 8.3 no 32-bit
php_sqlsrv_83_ts_x86.dll php_pdo_sqlsrv_83_ts_x86.dll 8.3 yes 32-bit
php_sqlsrv_83_nts_x64.dll php_pdo_sqlsrv_83_nts_x64.dll 8.3 no 64 bits
php_sqlsrv_83_ts_x64.dll php_pdo_sqlsrv_83_ts_x64.dll 8.3 yes 64 bits
php_sqlsrv_84_nts_x86.dll php_pdo_sqlsrv_84_nts_x86.dll 8,4 no 32-bit
php_sqlsrv_84_ts_x86.dll php_pdo_sqlsrv_84_ts_x86.dll 8,4 yes 32-bit
php_sqlsrv_84_nts_x64.dll php_pdo_sqlsrv_84_nts_x64.dll 8,4 no 64 bits
php_sqlsrv_84_ts_x64.dll php_pdo_sqlsrv_84_ts_x64.dll 8,4 yes 64 bits
php_sqlsrv_85_nts_x86.dll php_pdo_sqlsrv_85_nts_x86.dll 8.5 no 32-bit
php_sqlsrv_85_ts_x86.dll php_pdo_sqlsrv_85_ts_x86.dll 8.5 yes 32-bit
php_sqlsrv_85_nts_x64.dll php_pdo_sqlsrv_85_nts_x64.dll 8.5 no 64 bits
php_sqlsrv_85_ts_x64.dll php_pdo_sqlsrv_85_ts_x64.dll 8.5 yes 64 bits

Utilize um ficheiro driver não thread-safe com uma build PHP não thread-safe, e um ficheiro driver thread-safe com uma build PHP thread-safe. A interface de linha de comandos (CLI) pode usar qualquer uma das duas compilações. Para confirmar qual build tens, executa php -i e verifica o valor de Thread Safety .

Ficheiros de drivers para Linux e macOS

Os pacotes Linux_5.13.xRTW.tar.gz e Mac_5.13.xRTW.tar.gz contêm estes ficheiros. O arquivo Linux contém binários x64, e o arquivo macOS contém binários Arm64.

Os ficheiros pré-construídos também devem corresponder às bibliotecas nativas do seu sistema operativo. Os binários Linux 5.13.3 requerem glibc 2.38 e versões posteriores e um runtime em C++ que fornece GLIBCXX_3.4.32. Os binários do macOS 5.13.3 declaram o macOS 26 como o seu alvo mínimo de implementação. Estes requisitos binários são separados do suporte do sistema operativo para compilações de código-fonte.

Usa o PIE quando a arquitetura do arquivo comprimido ou os requisitos da biblioteca nativa não corresponderem à tua instalação PHP. Compilações PIE para o PHP instalado e para bibliotecas nativas. Não substituas manualmente as bibliotecas do sistema para carregar uma extensão pré-construída.

ficheiro SQLSRV ficheiro PDO_SQLSRV Versão de PHP Seguro para rosca?
SQLSRV_8.3_NTS.so PDO_SQLSRV_8.3_NTS.so 8.3 no
SQLSRV_8.3_TS.so PDO_SQLSRV_8.3_TS.so 8.3 yes
SQLSRV_8.4_NTS.so PDO_SQLSRV_8.4_NTS.so 8,4 no
SQLSRV_8.4_TS.so PDO_SQLSRV_8.4_TS.so 8,4 yes
SQLSRV_8.5_NTS.so PDO_SQLSRV_8.5_NTS.so 8.5 no
SQLSRV_8.5_TS.so PDO_SQLSRV_8.5_TS.so 8.5 yes

Copia cada ficheiro de que precisas no teu diretório de extensões PHP. Pode manter o nome do ficheiro do pacote e escrever extension=SQLSRV_8.4_NTS.so, ou renomear o ficheiro para sqlsrv.so e escrever a forma extension=sqlsrvcurta . Aplique a mesma escolha de nome a PDO_SQLSRV. Para encontrar o diretório de extensões, execute php -i | grep extension_dir. Siga Carregar os controladores no Linux e macOS para ativar as extensões no ficheiro de configuração correto e carregue PHP Data Objects (PDO) antes de PDO_SQLSRV.

Versões anteriores

Para os ficheiros de drivers incluídos em versões anteriores à 5.13, descarregue o pacote dessa versão na página Versões do Microsoft Drivers for PHP for SQL Server e liste o seu conteúdo. Lançamentos anteriores à 5.12 publicam um pacote separado para cada sistema operativo e versão PHP em vez de um único pacote por plataforma.

Verificar o ambiente selecionado

Execute estas verificações após instalar as extensões PHP e o driver ODBC, mas antes de configurar um servidor web:

php --version
php --ini
php --ri sqlsrv
php --ri pdo_sqlsrv

Os dois últimos comandos devem mostrar secções separadas de informação de módulo. Se algum dos comandos reportar que a extensão não está presente, termine o procedimento de instalação e carregamento da plataforma antes de testar uma ligação à base de dados.

Criar verify-php-drivers.php para verificar ambas as APIs PHP sem exigir credenciais:

<?php
$failures = [];

if (!extension_loaded('sqlsrv') || !function_exists('sqlsrv_connect')) {
    $failures[] = 'SQLSRV is not loaded.';
}

if (!extension_loaded('pdo_sqlsrv') || !in_array('sqlsrv', PDO::getAvailableDrivers(), true)) {
    $failures[] = 'PDO_SQLSRV is not loaded.';
}

echo $failures === []
    ? "SQLSRV and PDO_SQLSRV are loaded." . PHP_EOL
    : implode(PHP_EOL, $failures) . PHP_EOL;

exit($failures === [] ? 0 : 1);

Execute-o com o executável PHP que serve a aplicação:

php verify-php-drivers.php

Produção esperada:

SQLSRV and PDO_SQLSRV are loaded.

Esta verificação verifica o carregamento da extensão. Não verifica a conectividade ODBC, a autenticação, a confiança de certificados, o acesso à rede ou as permissões da base de dados.

Apaga verify-php-drivers.php depois de registares o resultado.

Diagnosticar falhas de requisitos

Symptom Provável proprietário Cheque
PHP Startup: Unable to load dynamic library Seleção do ambiente de execução ou da extensão PHP Versão menor do PHP, arquitetura, modo de segurança de threads, extension_dire nome exato do ficheiro
Call to undefined function sqlsrv_connect() Configuração da extensão SQLSRV php --ri sqlsrv, o ativo php.ini e os ficheiros digitalizados .ini
PDOException: could not find driver extensão PDO_SQLSRV ou ordem de carregamento do PDO php --ri pdo_sqlsrv, PDO::getAvailableDrivers(), e se o PDO carrega primeiro
Biblioteca msodbcsql ou libodbc em falta Instalação ODBC ou loader do sistema operativo Pacote ODBC, arquitetura e dependências de bibliotecas partilhadas instalados
A CLI funciona, mas o site falha Configuração PHP específica para SAPI Compare php --ini com uma página temporária phpinfo() após restringir o acesso à página de diagnóstico
A extensão carrega, mas a ligação falha ODBC, rede, autenticação, certificado ou destino de base de dados Capturar a coleção de erros SQLSRV ou exceção PDO e diagnosticar o SQLSTATE reportado