PHP 5 + SQL Server 2008 Express

Estou brincando um pouco com o PHP rodando no IIS 7, fazendo tanto acessos ao MySQL como ao SQL Server Express. Então vou aproveitar o gancho e deixar aqui algumas dicas que podem te ajudar a não perder tempo com alguns detalhes de configuração do ambiente.

Depois de configurar no IIS um Handler FastCGI para trabalhar com PHP (https://learn.iis.net/page.aspx/375/setting-up-fastcgi-for-php/), você deve ter feito o teste básico do <?php phpinfo() ?> e salvo o teste.php. Guarde ele…

Feito algumas gracinhas com o PHP, foi hora de acessar o MySQL. Editei o PHP.ini e retirei o comentário da linha “extension=php_mysql.dll” e fui usar a função “mysql_connect”, resultado: “PHP Fatal error: Call to undefined function mssql_connect() in …”. Esse erro foi tranquilo, reiniciei o serviço do IIS e alterei a configuração extension_dir para “.\ext” ao invés de “.\”, pois as dlls estavam nesse diretório. Tudo funcionou corretamente e continuei brincando (nota: depois eu voltei o extension_dir para “.\” e o mysql ainda continuou funcionando, o que indica que isso não trouxe nenhum benefício).

Então chegou a hora de usar o PHP para acessar o SQL Server. Como eu havia visto um php_mssql.dll no “php.ini”, fui direto lá e descomentei o bendito, mas quando fui utilizá-lo continuei recebendo o mesmo erro de função indefinida. Depois de alguns testes, deixei esse camarada de lado e baixei o SQL Server 2005 Driver for PHP Cumulative Update – October 2008 (https://www.microsoft.com/downloads/details.aspx?FamilyId=61BF87E0-D031-466B-B09A-6597C21A2E2A&displaylang=en) . Importante: esse driver funciona para SQL Server 2008 também, então não precisa ficar correndo atrás de outro.

Nota: nesse meio tempo, passei a usar uma função do php bem interessante, chamada function_exists, que nos ajuda a descobrir se o módulo foi carregado corretamente.

if (function_exists(' <nome da funcao> '))
echo "Função encontrada";
else
echo "Aonde está você???";
die("AAAARRRRGGGHHHH");

Fiz o extract do pacote, copiei o arquivo php_sqlsrv.dll para a pasta “ext” do php e configurei no arquivo php.ini esse novo módulo, adicionado “extension=php_sqlsrv.dll”. Pronto, o módulo passou a ser carregado pelo php, a verificação acima parou de reclamar e o teste.php passou a mostrar o módulo do SQL Server carregado.

Quando fui abrir minha primeira conexão e executar uma consulta, recebi outra mensagem de erro! Que passou a ser “SQLSTATE: IM002 - message: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified”. O que fazer??? Depois de um pouco de pesquisa, descobri que precisamos instalar o SQL Server 2005 ODBC driver a partir do feature pack do SQL Server 2005, que pode ser conseguido aqui: https://www.microsoft.com/downloads/details.aspx?FamilyID=50B97994-8453-4998-8226-FA42EC403D17&displaylang=en.

Feito tudo isso, eu consegui usar o PHP para fazer consultas no SQL Server Express sem a menor dificuldade, o que foi bem legal.

Espero que esse post o ajude a evitar esses pequenos detalhes de configuração, permitindo-o utilizar o SQL Server com PHP. Mais importante, você pode usar a versão Express do SQL Server, que funciona muito bem para aplicações de menor porte e possui recursos avançados, como manipulação de XML, Full-Text Search, Filestream e reporting, o que o habilita a trabalhar com alguns cenários que são restringidos em diversos outros bancos de dados relacionais.

Aproveitando a deixa, pergunto: Você está usando o SQL Server Express? Qual o tipo de aplicação?
Compartilhe aqui o seu caso para discutirmos com o pessoal.

 

[]s
Luciano Caixeta Moreira
luciano.moreira@microsoft.com
===============================================
This post is provided "AS IS" and confers no right
===============================================