Um problema que tive recentemente foi atualizar a versão do PHP e do M$ Sql ao mesmo tempo... O clássico problema dos afoitos... Em vez de atualizar um, ver se tudo funciona e depois atualizar o outro... imperou, como sempre, o "Time is money" e "vamos que vamos"...
Bom... Como era de se esperar, nada mais funcionou... Minhas aplicações não conseguiram mais acessar o banco de dados, etc. e tal.
Pesquisando diversos fóruns percebi que esta solução não é nada fácil de se encontrar... Isto quando os fóruns chegam a ela. Aqui vai o que resolveu o meu problema e espero que resolva o teu.
Uma solução rápida, que parece ter funcionado com muitas pessoas mas não funcionou comigo (soluções simples costumam ter o efeito "lei de Murph" comigo) é o de simplesmente atualizar a dll ntwdblib.dll do teu php. Para tal, basta você baixar a versão 200.80.194.0 do arquivo ntwdblib.dll
(clique aqui para tal) e substituir pela que está na tua pasta do PHP (recomendo fortemente fazer backup da tua versão antiga antes desta operação).Se você consegue se virar bem com os "How to's" da Microsoft, acesse a URL abaixo e boa sorte.
http://www.microsoft.com/downloads/details.aspx?FamilyID=ccdf728b-1ea0-48a8-a84a-5052214caad9&displaylang=en#Instructions
Caso contrário, vou tentar mastigar a solução abaixo.
*)Os passos abaixos devem ser executados na máquina onde o php é executado, isto é, no teu web server.
*)A solução está disponível para os seguintes sistemas operacionais:
- Windows Server 2003 Service Pack 1
- Windows XP Service Pack 3
- Windows Vista
- Windows Server 2008
- Windows 7
*)Você precisará baixar o driver do PHP para SQL Server. Faça-o pela URL abaixo:
http://www.microsoft.com/downloads/details.aspx?FamilyID=ccdf728b-1ea0-48a8-a84a-5052214caad9&displaylang=en
ou pela URL abaixo caso a acima não funcione:
http://msdn.microsoft.com/en-us/data/cc299381.aspx
*)Baixe e instale o SQL Native Client de acordo com o teu processador:
Download the X86 package
Download the X64 package
Download the IA64 package
Para tal, acesse a URL abaixo e clique em uma das opções acima listadas.
http://msdn.microsoft.com/en-us/library/cc296170%28SQL.90%29.aspx
*)Após baixar o arquivo SQLServerDriverForPHP11.EXE, execute-o. Será perguntado o local onde os arquivos deverão ser descompactados. Escolha c:\ ou um de sua preferência.
Ao ser descompactado, os seguintes arquivos dll estarão disponíveis:
Arquivo de driver | Versão do PHP | É thread safe? | Usar com este dll |
php_sqlsrv_53_nts_vc6.dll | 5.3 | Não | php5.dll |
php_sqlsrv_53_nts_vc9.dll | 5.3 | Não | php5.dll |
php_sqlsrv_53_ts_vc6.dll | 5.3 | Sim | php5ts.dll |
php_sqlsrv_53_ts_vc9.dll | 5.3 | Sim | php5ts.dll |
php_sqlsrv_52_nts_vc6.dll | 5.2 | Não | php5.dll |
php_sqlsrv_52_ts_vc6.dll | 5.2 | Sim | php5ts.dll |
A terminação "ts" indica "thread safe"; A terminação "vc6" arquivo a ser usado se o teu PHP foi compilado pelo Visual C++ 6.0; A terminação "vc9" arquivo a ser usado se o teu PHP foi compilado pelo Visual C++ 9.0; |
*)Mova todos os dll's acima para a pasta de extensões do PHP. Em geral esta pasta tem o nome "ext" e fica dentro da pasta onde ficam os arquivos do PHP. Na minha máquina, por exemplo, fica em c:\xampp\php\ext.
*)Altere o arquivo php.ini, acrescentando a linha abaixo:
extension=<nome_do_arquivo_dll>
substituindo <nome_do_arquivo_dll> pelo nome do arquivo dll conforme tabela acima.
Exemplo: Se o teu PHP foi compilado pelo Visual C++ 6.0 e você deseja usar o driver thread-safe, a linha acrescentada no php.ini deve ser a seguinte:
extension=php_sqlsrv_53_ts_vc6.dll
Obs1: Para saber qual a versão do Visual C++ com a qual o teu PHP está compilado, execute o phpinfo().
Obs2: Acrescentar o extension acima provavelmente significa dizer que você não quer mais usar o driver antigo. Recomendo comentar a linha que carrega o driver antigo (no meu php.ini é a linha "extension=php_mssql.dll").
*)Reinicialize o teu servidor WEB
Obs: Existe uma outra forma de carregar esta extensão sem a necessidade de alterar o arquivp php.ini(e, conseqüentemente, sem a necessidade de reiniciar o servidor web). Para isto, utilize o comando dl no teu script php, conforme exemplo abaixo:
dl('<nome_do_arquivo_dll>');
Veja a documentação do comando dl aqui.
***)Se depois deste árduo trabalho ainda não estiver funcionando, tenho algumas dicas:
1)Você está usando ADODB? Se sim, certifique-se de estar utilizando a última versão. Baixe a última
versão aqui.
2)Na conexão você está usando NewADOConnection("mssql");? Se sim, mude para NewADOConnection("mssqlnative");
Acho que é isso aí.
Quaisquer dúvidas dêem uma consultada em
http://msdn.microsoft.com/en-us/library/cc296173%28SQL.90%29.aspx
que foi a maior fonte de ajuda que tive para resolver o problema e, posteriormente, postar este "tutorial".
Mensagens relacionadas (viabiliza este texto ser encontrado pelo google):
"Unable to connect to server:"
Nenhum comentário:
Postar um comentário