
Ich erstelle also eine Webseite auf meinem Windows Server 2008 R2. Ich habe IIS 7 für die Arbeit im Intranet konfiguriert, sodass ich von jedem Computer in meinem Active Directory/lokalen Netzwerk lokal auf die Site zugreifen kann. Wenn ich versuche, ein PHP-Skript auszuführen, das eine einfache Abfrage ausführt, um mir mitzuteilen, ob der Server eine Verbindung herstellt. Ich versuche, die Seite sowohl vom Server als auch vom Client (von meiner Workstation) aus auszuführen, und es funktioniert überhaupt nicht.
Dies ist ein Beispiel für den Code, den ich verwende, um eine Verbindung herzustellen. Ich erhalte jedoch immer wieder die Fehlermeldung „Fehler: SQLSTATE[HY000] [2002] Es konnte keine Verbindung hergestellt werden, da der Zielcomputer diese aktiv abgelehnt hat.“
Beachten Sie, dass die Felder ServerName, UserName, Password und DBName aus Sicherheitsgründen entfernt wurden. Außerdem ist der gesamte Code in !DOCTYPE, HTML und Body enthalten.
<?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>";
?>
Antwort1
Behoben. Es stellte sich heraus, dass ODBC veraltet war und Windows 2008 R2 die SQL-Treiber für PHP benötigte.