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!
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!!!