Conectando-se ao SQL Server 2005 via PDO

1

Eu atualizei minha instalação do php para a versão 5.4.14 usando o Web Platform Installer 4.6 da Microsoft.

Php está funcionando muito bem, exceto que não consigo me conectar ao meu banco de dados.

Minha conexão estava funcionando muito bem antes da atualização, mas agora não funcionará. Aqui está minha string de conexão, onde 1.1.1.1 é o meu endereço IP real:

$db = new PDO("odbc:DRIVER={SQL Server};SERVER=1.1.1.1;DATABASE=TEST;charset=utf8", "TEST", "Password");

Isso faz com que o navegador exiba uma página que diz "erro do servidor", mas meu log de erros permanece vazio. No meu arquivo php.ini, eu tenho estas linhas:

extension=php_pdo_sqlsrv.dll
extension=php_sqlsrv.dll
extension=php_sqlsrv_53_nts_vc6.dll

Estas extensões não aparecem na minha página phpinfo.php. Minha variável "extension_dir" está definida para o diretório correto.

ATUALIZAÇÃO: Agora meu log de erro está sendo preenchido (por razões desconhecidas) e estou recebendo este erro:

PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\Program Files\PHP\v5.4\ext\php_pdo_sqlsrv.dll' - The specified module could not be found.
    
por Zamicol 19.08.2013 / 00:37

1 resposta

0

Eu não consegui obter uma conexão SQL trabalhando no php 5.4.14, mas consegui fazer o downgrade para 5.3 e fazê-lo funcionar. Eu aprendi muito ao longo do caminho e queria postar aqui para ajudar os outros que vêm depois.

Sobre o meu ambiente: Windows Server 2003 IIS versão 6.0 SQL Server 2005, localizado em outra máquina.

Instruções para instalar o PHP 5.3.xx: 1. Desinstale qualquer versão do php anterior que você não esteja usando. Você pode ter mais de uma versão do PHP instalada ao mesmo tempo.

  1. Instale o Web Platform Installer 4.6 da Microsoft. link

  2. Uma vez instalado, execute-o e vá para a guia Aplicativos.
    -Procure por "php". -Instalar o PHP versão 5.3.xx E "Drivers da Microsoft para PHPv5.3 para SQL Server no IIS"

  3. Baixe o "Microsoft Drivers 3.0 para PHP para SQL Server", SQLSRV20.EXE, de link . Isso é muito importante que você selecione o pacote SQLSRV20.EXE e não o pacote SQLSRV30.EXE. "Instalar" o pacote SQLSRV20.EXE em qualquer lugar. Você estará copiando dois drivers desse diretório na etapa cinco. -Nota: Para qualquer um baixar o SQLSRV30.EXE para uma configuração de instalação diferente e que recebe o erro "SQLSRV30.EXE não é um aplicativo Win32 válido", você pode contornar isso usando 7-zip e unextracting seu conteúdo. (Você pode tratar o .exe como um arquivo.)

  4. Navegue até o diretório de instalação do PHP (no meu caso, C: \ PHP \ v5.3). Em seguida, digite o diretório "ext".
    -Exclua dois arquivos: "php_pdo_sqlsrv.dll" e "php_sqlsrv.dll" - Copie esses dois arquivos, "php_pdo_sqlsrv_53_nts_vc9.dll" e "php_sqlsrv_53_nts_vc9.dll", do diretório que você instalou no pacote SQLSRV20.EXE.
    -Nota: No nome do arquivo para o driver, "nts" significa "não-thread seguro", vc9 é o ambiente que foi usado para compilar o driver / php, e "53" se correlaciona com a versão do php em uso (em Neste caso, php versão 5.3.whatevertheminorversionis). Você deve sempre instalar a versão não thread-safe no Windows. O Web Platform Installer da Microsoft faz isso por você.

  5. Abra o seu arquivo php.ini (localizado no diretório raiz de onde o PHP está instalado. No meu caso, isso foi C: \ PHP \ v5.3 \ php.ini) delete essas duas linhas que estarão próximas do fim do arquivo:

    extension = php_sqlsrv.dll

    extension = php_pdo_sqlsrv.dll

    E adicione estas duas linhas:

    extension = php_sqlsrv_53_nts_vc9.dll

    extension = php_pdo_sqlsrv_53_nts_vc9.dll

  6. No IIS, adicione aplicativos php a um pool, se ainda não estiver pronto, clique com o botão direito do mouse no pool e pressione a tecla para reciclar. Você deveria ser bom para ir!
    -Você também pode tentar reiniciar o serviço de administração do IIS

RESOLUÇÃO DE PROBLEMAS Meu aplicativo que eu estava executando minha página phpinfo.php não estava em um pool de aplicativos php. Ele estava sendo executado em um pool de aplicativos do asp.net. Depois de mover meu aplicativo php para seu próprio pool e reiniciar o pool de aplicativos, o driver SQL apareceu.

Você pode precisar configurar o arquivo fcgiext.ini em C: \ WINDOWS \ system32 \ inetsrv. Sob a seção de tipos, você deve ter listado algo como "php = PHP53_via_FastCGI" e depois "[PHP53_via_FastCGI] ExePath = C: \ Arquivos de Programas \ PHP \ v5.3 \ php-cgi.exe "

"php = PHP53_via_FastCGI" deve se correlacionar com a instalação do PHP que você deseja no IIS. Se você tinha outra seção para "PHP54_via_FastCGI" e você quer usar o PHP 5.4 para páginas, então você deve mudar este valor para "php = PHP53_via_FastCGI".

    
por 20.08.2013 / 22:43

Tags