Consulta PHP para SQL Server por meio do IIS 7.0 no Windows Server 2008 R2

Consulta PHP para SQL Server por meio do IIS 7.0 no Windows Server 2008 R2

Portanto, estou construindo uma página da Web no meu Windows Server 2008 R2, tenho o IIS 7 configurado para funcionar na intranet para poder acessar o site localmente de qualquer máquina no meu Active Directory/rede local. Quando tento executar um script PHP que faz uma consulta básica para me informar se o servidor está conectado. Tento executar a página tanto do lado do servidor quanto do lado do cliente (da minha estação de trabalho) e ela não está funcionando.

Este é um exemplo do código que estou usando para estabelecer uma conexão, mas continuo recebendo o erro "Erro: SQLSTATE[HY000] [2002] Nenhuma conexão pôde ser feita porque a máquina de destino a recusou ativamente".

Observe que os campos ServerName, UserName, Password e DBName foram retirados por motivos de segurança. Além disso, todo o código está contido em !DOCTYPE, HTML e Body.

<?php
echo "<table style='border: solid 1px black;'>";
  echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>";

class TableRows extends RecursiveIteratorIterator { 
     function __construct($it) { 
         parent::__construct($it, self::LEAVES_ONLY); 
     }

     function current() {
         return "<td style='width: 150px; border: 1px solid black;'>" . parent::current(). "</td>";
     }

     function beginChildren() { 
         echo "<tr>"; 
     } 

     function endChildren() { 
         echo "</tr>" . "\n";
     } 
} 

$servername = "[SERVERNAME]";
$username = "[USERNAME]";
$password = "[PASSWORD]";
$dbname = "[DBNAME]";

try {
     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $stmt = $conn->prepare("SELECT id, EventID, EventType FROM dbo.Event"); 
     $stmt->execute();

     // set the resulting array to associative
     $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

     foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
         echo $v;
     }
}
catch(PDOException $e) {
     echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>  

Responder1

Corrigido. Acontece que o ODBC estava desatualizado e o Windows 2008 R2 exigia os drivers SQL para PHP.

informação relacionada