Hey Guys!
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 18.2.1.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 |
---|---|---|
5.11.0-beta1 | PHP 7.4 a PHP 8.2 | Baixar |
5.10.1 | PHP 7.4 a PHP 8.1 | Baixar |
5.9 | PHP 7.3 a PHP 8.0 | Baixar |
5.8 | PHP 7.2 a PHP 7.4 | Baixar |
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
Clique aqui para expandirRelação entre versão do driver e versão do banco de dados
Clique aqui para expandirRelação entre versão do driver e versão do Windows
Clique aqui para expandirApó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!
Muito obrigado pelo conteúdo!
Foi extremamente bem explicado e, como sempre, seus materiais nos ajudam bastante.
top me salvou
Sensacional!!!! Vc não imagina quanto me ajudou, a pesar que passou já um bom tempo desde que vc postou o conteúdo
Tem algum tutorial com o Xampp no Ubuntu e o SQL-Server no Windows?
Também estou querendo um tutorial desse.
Me ajudou muito! Parabéns!
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!!!