Olá pessoal!
Tudo certinho ?
Neste post, eu gostaria de demonstrar como conectar no SQL Server utilizando o PHP (Xampp) e o driver PDO no Windows. Muitas pessoas acabam passando por dificuldades para a instalação e configuração dos drivers, devido a pequenos detalhes técnicos que acabam não sendo observados e impossibilitam a conexão entre o PHP e o banco de dados SQL Server.
O primeiro passo para conseguir essa conexão é baixar o Microsoft® ODBC Driver 13.1 for SQL Server® para a sua máquina e realizar a instalação do driver.
O próximo passo é visualizar as informações do seu ambiente. Para isso, crie um arquivo chamado phpinfo.php na raiz do seu servidor web PHP (o diretório padrão é C:\xampp\htdocs), com o conteúdo abaixo:
1 2 3 | <?php phpinfo(); ?> |
Após visualizar esse arquivo no seu navegador web (http://localhost/phpinfo.php), você deverá observar uma tela como essa:
Neste tela, precisamos identificar as seguintes variáveis de ambiente:
- Versão do PHP (no caso do exemplo, 7.1.1)
- Arquitetura do PHP (no caso do exemplo, x86)
- Localização do arquivo de configuração (php.ini)
- Verificar se versão da compilação do PHP é TS (Thread-safe) ou NTS (Non Thread-safe) (no caso do exemplo, é TS)
Após identificar essas informações, vamos agora baixar o Microsoft Drivers for PHP for SQL Server, de acordo com a sua versão do PHP:
Relação entre versão do driver e versão do PHP
Versão do Driver | Versão do PHP | Download do driver |
---|---|---|
4.3 | PHP 7.0 e PHP 7.1 | Baixar |
4.0 | PHP 7.0 | Baixar |
3.2 | PHP 5.6.4+ ou PHP 5.5.16+ ou PHP 5.4.32 | Baixar |
3.1 | PHP 5.5.16+ ou PHP 5.4.32 | Baixar |
3.0 | PHP 5.4.32 ou PHP 5.3.0 | Baixar |
2.0 | PHP 5.3.0 ou PHP 5.2.4 ou PHP 5.2.13 | Baixar |
Relação entre versão do driver e versão do driver ODBC
Versão do Driver | Versão do Driver ODBC Driver ou SQL Server Native Client |
---|---|
4.3 | Microsoft ODBC Driver 11 for SQL Server ou Microsoft ODBC Driver 13.1 for SQL Server |
4.0 | Microsoft ODBC Driver 11 for SQL Server ou Microsoft ODBC Driver 13 for SQL Server |
3.2 ou 3.1 | Microsoft ODBC Driver 11 for SQL Server |
3.0 | SQL Server 2012 feature pack |
2.0 | Microsoft SQL Server 2008 R2 Native Client 32 bits (X86) ou Microsoft SQL Server 2008 R2 Native Client 64 bits (x64) |
Relação entre versão do driver e versão do banco de dados
Versão do Driver | Versão do Banco de Dados |
---|---|
4.3 | SQL Server 2008 R2 e acima |
4.0 | SQL Server 2008 e acima |
3.1 | SQL Server 2008 e acima |
2.0 e 3.0 | SQL Server 2005 e acima |
Relação entre versão do driver e versão do Windows
Versão do Driver | Versão do Sistema Operacional |
---|---|
4.3 | Windows Server 2012 Windows Server 2012 R2 Windows Server 2016 Windows 8 Windows 8.1 Windows 10 Ubuntu 15.10 (64-bit) Ubuntu 16.04 (64-bit) Debian 8 (64-bit) Red Hat Enterprise Linux 7 (64-bit) Mac OS Sierra (64-bit) Mac OS El Capitan (64-bit) |
4.0 | Windows Server 2008 SP2 Windows Server 2008 R2 SP1 Windows Server 2012 Windows Server 2012 R2 Windows Vista SP2 Windows 7 SP1 Windows 8 Windows 8.1 Windows 10 Ubuntu 15.04 (64-bit) Ubuntu 16.04 (64-bit) Red Hat Enterprise Linux 7 (64-bit) |
3.2 e 3.1 | Windows Server 2008 R2 SP1 Windows Vista SP2 Windows Server 2008 SP2 Windows 7 SP1 Windows Server 2012 Windows Server 2012 R2 Windows 8 Windows 8.1 |
3.0 | Windows Server 2008 R2 SP1 Windows Vista SP2 Windows Server 2008 SP2 Windows 7 SP1 |
2.0 | Windows Server 2003 Service Pack 1 Windows XP Service Pack 3 Windows Vista Service Pack 1 or later Windows Server 2008 Windows Server 2008 R2 Windows 7 |
Após identificar a versão correta do driver de acordo com a sua versão do PHP, SQL Server e Sistema Operacional, baixe o driver indicado e escolha uma pasta para extrair os arquivos durante a instalação.
Após isso, copie todos os arquivos que foram instalados para o diretório php\ext na sua instalação do Xampp (o diretório padrão é C:\xampp\php\ext)
Caso você não saiba o caminho do seu arquivo de configuração (o caminho padrão é C:\xampp\php\php.ini), na tela do phpinfo(), demonstrada logo acima, é possível identificar o caminho correto do seu arquivo php.ini buscando por Loaded Configuration File
Após copiar todos os arquivos, edite o arquivo php.ini da sua instalação e adicione os registros abaixo:
extension=php_pdo_sqlsrv_71_ts_x86.dll
extension=php_sqlsrv_71_ts_x86.dll
Lembrando que o nome das DLL’s variam de acordo com a versão do PHP (71, 70, 54, etc), Thread-safe (TS ou NTS) e arquitetura (X86 ou X64) e devem ser SEMPRE iguais ao nome dos arquivos que você baixou e copiou para o diretório php\ext.
Uma vez que você já editou o arquivo php.ini, basta reiniciar o Apache para que as alterações façam efeito, conforme demonstrado abaixo:
Abra novamente o arquivo phpinfo.php (http://localhost/phpinfo.php) e veja se agora o driver foi carregado:
Caso esteja igual ao do print, quer dizer que o driver está instalado e pronto para ser utilizado!
Script de teste de conexão
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php try { $servidor = "vm-dba"; $instancia = "sql2016"; $porta = 1433; $database = "master"; $usuario = "usuario_php"; $senha = "123456"; $conexao = new PDO( "sqlsrv:Server={$servidor}\\{$instancia},{$porta};Database={$database}", $usuario, $senha ); } catch ( PDOException $e ) { echo "Drivers disponiveis: " . implode( ",", PDO::getAvailableDrivers() ); echo "\nErro: " . $e->getMessage(); exit; } $query = $conexao->prepare( "select @@version" ); $query->execute(); $resultado = $query->fetchAll(); echo $resultado['0']['0']; unset( $conexao ); unset( $query ); |
É isso aí!
Espero que tenham gostado desse artigo e já podem começar a criar aplicações utilizando PHP e SQL Server!
Existe ainda um link bem interessante, da própria Microsoft, que ajuda os desenvolvedores a criarem um ambiente PHP. Para acessar essa documentação, clique neste link aqui.
Forte abraço!
eu encontrei!
Para PHP 7.4? copartilha ai
Alguem encontrou uma solucao para conectar o php 7.4 com sql server?
Melhor post que eu achei! Parabéns! Só que eu fiz todos os passos e o meu não aparece no phpinfo o nome sqlsrv. O que pode ser?
Também estou com o mesmo problema, você conseguiu resolver?
Olá, com a versão 7.3.6 do PHP, o SQL Server 2008 R2 e o Windows Server 2008 R2 é possível fazer a conexao ?
Marvin, eu acredito que não.. Porque no Windows server 2008 eu acho que você só consegue usar até a versão 4.0 do driver, que suporta só até o PHP 7.0…
simplesmente sem palavras, foi o único que encontrei que passou o passo a passo de maneira didática.
Obrigado, Hélio!
Espero que tenha sido útil pra você 🙂
Bom dia , fiz todo o procedimento , coloquei o xampp na mesma versão e fui seguindo todos os passos , contudo ainda apresenta o erro “Drivers disponiveis: mysql,odbc,pgsql,sqlite Erro: could not find driver” , Alguem poderia me ajudar ?
Fala Luiz, tudo bem?
Voce conferiu as versões do Windows e do PHP? Utilizou o driver correto pra sua versão?
Pessoal, esse post é um passo a passo fantástico.
Só um detalhe, o Ultimo XAMPP não funciona mesmo. só do 7.2 abaixo.
Olá, no meu caso, no PHPinfo() não aparece o nome sqlsrv no “Registered PHP Streams” e acho que por isso, não funciona o teste de conexão. Alguém sabe o que pode ser?
Olá Diego, você conseguiu resolver esse problema? Também estou tentando resolver esse mesmo problema…
Apenas para complementar o que escrevi antes, o que tentei fazer foi instalar um PHP no IIS 7 (até aí tranquilo), habilitar o PDO_SQL no Windows 8 R2 e SQL 2008 (foi aí que apanhei !) e também o gerenciador PHP no painel IIS (que só funcionou direito depois das versões certas instaladas)
Este é um dos post mais importantes que encontrei, pois foi o único objetivamente que encontrei sobre o problema de versão errada instalada no sistema. Já tinha resolvido um dia antes, mas apanhei por horas e horas até conseguir descobrir que era problema de versão. Não encontro essas informaçõe no site do PHP e nem nas páginas de suporte da microsoft. No meu caso descobri, por que na extração dos drivers de PDO vem um readme detalhando quais sistemas compatíveis.
Olá, Instalei o Xampp no Windows e gostaria de saber como eu faço gerenciar o arquivo de log do apache(C:\xampp\apache\logs), o meu arquivo de log está com 50 MB e futuramente terei problemas, é possível delimitar um tamanho e depois de atingindo o tamanho, o arquivo de log auto reciclar ?
Outra dúvida como faço para o arquivo de log (C:\xampp\apache\logs) registre o usuário de rede de quem acessa uma página em PHP ?
Obrigado !
Meus parabéns!
Único post que conseguir conectar no banco de dados.
Obrigado!
Sensacional!!!