Installiere die Microsoft-Treiber für PHP unter Linux und macOS

Diese Anweisungen installieren PHP, den Microsoft ODBC-Treiber für SQL Server sowie die SQLSRV- und PDO_SQLSRV-Erweiterungen. Jeder Tab verwendet das PHP-Paket, das von dem Repository bereitgestellt wird, aus dem dieser Tab installiert wird, sodass die in den Befehlen angegebene Version von Tab zu Tab unterschiedlich ist. Ersetze sie durch eine andere PHP-Version, die in der Support-Matrix aufgeführt ist, falls dieses Repository eine andere anbietet.

Die SQLSRV- und PDO_SQLSRV-Treiber verwenden dieselbe ODBC-Abhängigkeit und können unabhängig voneinander installiert werden. Installiere beide Erweiterungen, wenn deine Anwendung beide Treiber verwendet.

Am Ende des Verfahrens sollten die CLI und die ausgewählte Webserver-Laufzeit beide Erweiterungen laden, beide PHP-APIs verfügbar sein und das Beispiel für jede API sollte die Datenbankserverversion zurückgeben.

Bevor du anfängst

  1. Wählen Sie eine PHP-Version, die vom aktuellen Treiber-Release unterstützt wird und für Ihre Betriebssystemversion verfügbar ist.

  2. Entscheiden Sie, welche PHP-Laufzeiten Sie benötigen:

    • CLI für Skripte, geplante Aufgaben oder Worker.
    • Apache-Modul für auf Apache gehostetes PHP.
    • PHP-FPM für nginx oder eine Apache FastCGI-Konfiguration.
  3. Bestätigen Sie die Betriebssystemarchitektur. Veröffentlichte Linux-Archive enthalten x64-Binärdateien und veröffentlichte macOS-Archive enthalten Arm64-Binärdateien. PIE erstellt Builds für die PHP-Installation auf dem Computer und ist der primäre Installationspfad in diesem Artikel.

  4. Installieren Sie den Microsoft ODBC-Treiber und das unixODBC-Entwicklungspaket. Das Microsoft-Paket übernimmt die Datenbankkommunikation. Das unixODBC-Paket liefert Header, die zum Erstellen von SQLSRV und PDO_SQLSRV erforderlich sind.

  5. Planen Sie, nach der Installation oder Änderung einer Erweiterung jeden Webserver, PHP-FPM Pool und lang laufenden Worker neu zu starten.

Der Plattform-Paketmanager installiert PHP und native Abhängigkeiten. PIE baut und installiert die PHP-Erweiterungen. Die PHP-Konfiguration steuert, ob jede Runtime-Umgebung sie lädt. Der ODBC-Treiber übernimmt die Datenbankkommunikation und Verschlüsselung nach dem Laden der Erweiterung.

Installiere die Treiber mit PIE

PIE, der PHP Installer für Erweiterungen, ist der unterstützte Erweiterungs-Installer für aktuelle Treiber-Releases. Es ersetzt den veralteten PHP Extension Community Library (PECL)- Workflow.

Erfüllen Sie die Plattformvoraussetzungen in den folgenden Abschnitten, bevor Sie die Treiber installieren. Dann installieren Sie PIE und jeden Treiber einzeln:

PIE installieren

PIE läuft auf PHP 8.1 und neueren Versionen. Es kann eine Erweiterung in eine andere PHP-Installation installieren, wenn du die Entwicklungstools dieser Installation auswählst.

Installiere curl und nutze die GitHub-CLI, bevor du fortfahrst. Die Plattformabschnitte umfassen curl, in denen dies bei einer Minimalinstallation möglicherweise nicht enthalten ist.

Laden Sie das PIE PHP-Archiv (PHAR) herunter und überprüfen Sie es mit der GitHub-Kommandozeilenschnittstelle (CLI), bevor Sie es installieren oder ausführen:

pie_tmp=$(mktemp -d)
curl -fL --output "$pie_tmp/pie.phar" https://github.com/php/pie/releases/latest/download/pie.phar
gh attestation verify --owner php "$pie_tmp/pie.phar"

Nur fortfahren, wenn die Verifizierung erfolgreich verläuft:

sudo install -m 755 "$pie_tmp/pie.phar" /usr/local/bin/pie
rm "$pie_tmp/pie.phar"
rmdir "$pie_tmp"
unset pie_tmp

Das temporäre Verzeichnis ist für dein Konto privat. Wenn der Download oder die Verifizierung fehlschlägt, installieren oder starten Sie das PHAR nicht. Entferne die temporäre Datei und das Verzeichnis, bevor du es erneut versuchst.

Bestätigen Sie, dass das installierte PHAR mit dem PHP-Executable läuft, das Sie verwenden möchten:

php /usr/local/bin/pie --version

Installiere die SQLSRV- und PDO_SQLSRV-Treiber

Unter Linux und macOS prüft PIE, ob der Compiler und die PHP-Entwicklungstools vorhanden sind. Installieren Sie das Plattform-ODBC-Entwicklungspaket und einen C++-Compiler, bevor Sie PIE ausführen. Führe PIE von einem interaktiven Terminal aus. Es kann dein sudo Passwort anfordern, wenn es die Erlaubnis braucht, Dateien in Systemverzeichnisse zu installieren.

PIE zielt auf die PHP-Installation ab, die zum Aufrufen von PIE verwendet wird. Für eine versionierte Installation fügen Sie --with-php-config jedem Installationsbefehl hinzu, um die entsprechenden Entwicklungswerkzeuge auszuwählen. Zum Beispiel verwenden wir pie install --with-php-config=/usr/bin/php-config8.4 microsoft/sqlsrv, wenn das gewünschte Werkzeug /usr/bin/php-config8.4 ist. Wende dieselbe Option auf microsoft/pdo_sqlsrv an. Alpine verwendet versionierte ausführbare Namen; folge den Alpine-Befehlen anstelle der nicht versionierten Befehle in diesem Abschnitt.

Führe für jede Erweiterung einen Befehl aus. Diese Befehle verwenden die Standard-PHP-Installation von PIE:

pie install microsoft/sqlsrv
pie install microsoft/pdo_sqlsrv

PIE versucht, jede Erweiterung über die PHP-Konfigurationswerkzeuge der Plattform oder einen extension= Eintrag zu aktivieren, und warnt, falls das nicht möglich ist. PHP verwendet für jede Ausführungsumgebung eine Server-Anwendungsprogrammierschnittstelle (SAPI). Unter Debian, Ubuntu und SUSE können die Konfigurationen der Befehlszeile, von Apache und des PHP FastCGI Process Manager (PHP-FPM) variieren. Eine erfolgreiche Kommandozeileninstallation bestätigt nicht, dass ein Webserver die Treiber lädt.

Prüfen Sie php --ini auf die Befehlszeile. Schränken Sie den Zugriff auf die diagnostische Seite ein, bevor Sie eine temporäre phpinfo() Seite für den Webserver erstellen. Überprüfen Sie die geladene Konfigurationsdatei und die gescannten .ini Dateien für jede Laufzeit. Wenn die Einträge fehlen, folge Lade die Treiber unter Linux und macOS, um sie in der richtigen Ladereihenfolge hinzuzufügen. Neustarte den Webserver oder PHP-FPM nach Konfigurationsänderungen. Red Hat teilt php.ini häufig über SAPIs hinweg, überprüft aber die aktive Konfiguration, bevor man sich auf einen PIE-Run verlässt.

Installieren Sie es auf Ihrer Plattform

Wählen Sie Ihr Betriebssystem und Ihre Webserver-Konfiguration aus. Führen Sie die Installationsschritte in jenem Tab durch und folgen Sie dann Testen der Installation.

Installation unter Ubuntu

Hinweis

Die folgenden Befehle verwenden das packages.sury.org PHP-Repository, sodass Sie eine unterstützte PHP-Version auswählen können. Verwenden Sie die offiziellen Microsoft-Anweisungen, um den ODBC-Treiber für Ihre Ubuntu-Version zu installieren.

Schritt 1. Installieren von PHP (Ubuntu)

sudo apt-get update
sudo apt-get install ca-certificates apt-transport-https curl gnupg2 lsb-release -y
sudo install -d -m 755 /etc/apt/keyrings
sudo curl -fsSL https://packages.sury.org/php/apt.gpg -o /etc/apt/keyrings/php.gpg
sudo chmod 644 /etc/apt/keyrings/php.gpg
echo "deb [signed-by=/etc/apt/keyrings/php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt-get update
sudo apt-get install php8.4 php8.4-dev php8.4-xml -y

Schritt 2. Installieren der erforderlichen Komponenten (Ubuntu)

Folge Installiere den Microsoft ODBC-Treiber für SQL Server unter Linux und installiere dann die Entwicklungsheader.

sudo apt-get install unixodbc-dev g++ make git -y

Schritt 3. Installiere die PHP-Treiber für Microsoft SQL Server mit PIE (Ubuntu)

Folge Installiere die Treiber mit PIE und füge --with-php-config=/usr/bin/php-config8.4 zu beiden Installationsbefehlen hinzu. Überprüfen Sie die Kommandozeilen-Konfigurationsdateien mit php8.4 --ini.

/usr/local/bin/pie install --with-php-config=/usr/bin/php-config8.4 microsoft/sqlsrv
/usr/local/bin/pie install --with-php-config=/usr/bin/php-config8.4 microsoft/pdo_sqlsrv

Schritt 4. Installieren von Apache und Konfigurieren des Ladens von Treibern (Ubuntu)

sudo apt-get install apache2 libapache2-mod-php8.4 -y
sudo a2enmod php8.4

Schritt 5. Starten Sie Apache neu, und testen Sie das Beispielskript (Ubuntu)

sudo systemctl restart apache2

Informationen zum Testen der Installation finden Sie unter Testen der Installation am Ende dieses Dokuments.

Legacy-PECL-Installation

PECL wird für aktuelle Treiberveröffentlichungen nicht mehr unterstützt. Verwenden Sie PIE für neue Installationen und Upgrades. Wenn eine bestehende Bereitstellung an PECL gebunden ist, sollten die Paketversionen mit der PHP-Laufzeit abgestimmt bleiben und einen Wechsel zu PIE planen.

Testen Sie Ihre Installation

Überprüfen Sie die Kommandozeilen-Laufzeitumgebung. Bei Alpine ersetzen Sie php durch php84. Für eine versionierte PHP-Installation auf einer anderen Distribution verwenden Sie die entsprechende ausführbare Datei.

php --ri sqlsrv
php --ri pdo_sqlsrv
php -m | grep -E "sqlsrv|pdo_sqlsrv"

Beide --ri Befehle sollten Modulinformationen ausgeben, die ExtensionVer enthalten. Die Modulliste sollte separate sqlsrv- und pdo_sqlsrv-Zeilen enthalten.

Bevor Sie eine Verbindung testen, überprüfen Sie beide PHP-API-Schnittstellen mit verify-php-drivers.php:

<?php
$checks = [
    'SQLSRV' => extension_loaded('sqlsrv') && function_exists('sqlsrv_connect'),
    'PDO_SQLSRV' => extension_loaded('pdo_sqlsrv')
        && in_array('sqlsrv', PDO::getAvailableDrivers(), true),
];

$failed = false;
foreach ($checks as $name => $loaded) {
    echo "$name: " . ($loaded ? 'loaded' : 'missing') . PHP_EOL;
    $failed = $failed || !$loaded;
}

exit($failed ? 1 : 0);

Erwartete Ausgabe:

SQLSRV: loaded
PDO_SQLSRV: loaded

Für PHP-FPM oder einen Webserver sollten Sie den Zugriff auf die diagnostische Seite einschränken , bevor Sie eine temporäre phpinfo() Seite erstellen. Bestätigen Sie die geladene Konfigurationsdatei, extension_dir und beide Treiberabschnitte. Neustarte PHP-FPM oder den Webserver nach einer Änderung der Konfiguration oder dem Austausch einer Erweiterung. Nehmen Sie die Seite nach der Verifizierung heraus.

Um eine Live-Verbindung zu testen, erstelle im Dokumentenstamm deines Systems eine Datei namens testsql.php. Dieser Pfad befindet sich /var/www/html auf Ubuntu, Debian und Red Hat, /srv/www/htdocs auf SUSE, /var/www/localhost/htdocs auf Alpine oder $(brew --prefix)/var/www auf macOS. Setze die SQL_SERVER_NAME, SQL_DATABASE, SQL_UID und SQL_PWD Umgebungsvariablen für den PHP-Prozess, bevor du das Skript ausführst. Hardcode keine Zugangsdaten in einer Datei unter der Dokumentwurzel.

Für einen Kommandozeilentest verwenden Sie die interaktiven Eingabeaufforderungen , um die Umgebungsvariablen festzulegen, ohne ein Passwort in die Shell-Historie einzugeben.

Für einen Apache-Modultest sollten Sie Zugangsdaten aus der allgemein lesbaren Konfigurationsdatei der Seite heraushalten:

  1. Erstelle eine private Datei außerhalb des Document Root. Verwenden Sie einen ungenutzten Dateinamen im Konfigurationsverzeichnis von Apache. Unter Linux:

    sudo install -o root -g root -m 600 /dev/null /etc/apache2/php-sql-driver-test.conf
    

    Bei Red Hat ersetzen Sie /etc/apache2 durch /etc/httpd. Erstellen Sie unter macOS die Datei als das Konto, das Homebrews Apache startet:

    install -m 600 /dev/null "$(brew --prefix)/etc/httpd/php-sql-driver-test.conf"
    

    Nur der Dateibesitzer und der Root-Nutzer können diese Einstellungen lesen. Das Konto, mit dem Apache gestartet wird, muss die Datei lesen können.

  2. Bearbeiten Sie die private Datei in einem Texteditor und fügen Sie diese Einträge hinzu:

    SetEnv SQL_SERVER_NAME "tcp:<server>,1433"
    SetEnv SQL_DATABASE "<database>"
    SetEnv SQL_UID "<user_id>"
    SetEnv SQL_PWD "<password>"
    

    Innerhalb der doppelt zitierten Argumente schreiben Sie \\ für jeden wörtlichen Backslash und \" für jedes wörtliche Doppelzitat. Behalten Sie führende und nachlaufende Leerzeichen innerhalb der Zitate. Apache ersetzt auch ${NAME}-Referenzen. Wenn ein Wert diese Sequenz oder einen Zeilenumbruch enthält, verwenden Sie stattdessen den Kommandozeilentest. Für weitere Informationen siehe Apache Configuration quoting and escaping.

  3. Innerhalb des virtuellen Hosts der Seite füge einen Files Block hinzu, der die private Datei nur für testsql.phpenthält. Wenn kein virtueller Host konfiguriert ist, platziere den Block in der Hauptserverkonfiguration. Ersetzen Sie den Platzhalter durch den absoluten Pfad der privaten Datei:

    <Files "testsql.php">
        Include "<absolute-path-to-private-file>"
    </Files>
    
  4. Apache neu starten. Nach dem Testen entferne den Files hinzugefügten Block, lösche die private Datei und starte Apache erneut neu. Behalten Sie die Einstellungen nicht zugehöriger Websites bei.

PHP-FPM löscht standardmäßig vererbte Umgebungsvariablen, und nginx übergibt seine Umgebung nicht an PHP-FPM. Verwenden Sie das folgende Ubuntu- oder Red Hat-Verfahren nur mit einem isolierten PHP-FPM-Testdienst und -Pool. Füge keine Testzugangsdaten zu einem Dienst oder Pool hinzu, der andere Anwendungen ausführt: Jedes Skript in diesem Pool kann sie lesen. Wenn du Shared Hosting nutzt, nutze stattdessen den Kommandozeilentest.

  1. Erstelle eine root-eigene Datei außerhalb der Dokumentwurzel, wie z. B. /etc/php-sql-driver-test.env, und beschränke den Zugriff darauf:

    sudo touch /etc/php-sql-driver-test.env
    sudo chmod 600 /etc/php-sql-driver-test.env
    

    Füge die Verbindungseinstellungen in die Datei hinzu:

    SQL_SERVER_NAME="tcp:<server>,1433"
    SQL_DATABASE="<database>"
    SQL_UID="<user_id>"
    SQL_PWD="<password>"
    

    Jede Einstellung in einer Zeile belassen. Innerhalb der doppelten Anführungszeichen schreiben Sie \\ für jeden wörtlichen Backslash und \" für jedes wörtliche doppelte Anführungszeichen. Dollarzeichen und Backticks werden nicht als Shell-Ausdrücke ausgewertet. Bearbeiten Sie die Datei direkt, anstatt sie in einer Shell auszuführen oder per source einzubinden. Weitere Informationen finden Sie unter systemd EnvironmentFile Syntax.

  2. Führen Sie sudo systemctl edit php8.4-fpm auf Ubuntu oder sudo systemctl edit php-fpm auf Red Hat aus. Fügen Sie diese systemd-Überschreibung hinzu:

    [Service]
    EnvironmentFile=/etc/php-sql-driver-test.env
    
  3. Füge diese Einträge zur aktiven PHP-FPM Pool-Konfiguration hinzu. Gängige Standorte sind /etc/php/8.4/fpm/pool.d/www.conf auf Ubuntu und /etc/php-fpm.d/www.conf auf Red Hat:

    env[SQL_SERVER_NAME] = $SQL_SERVER_NAME
    env[SQL_DATABASE] = $SQL_DATABASE
    env[SQL_UID] = $SQL_UID
    env[SQL_PWD] = $SQL_PWD
    
  4. Laden Sie systemd neu und starten Sie den entsprechenden PHP-FPM-Dienst neu:

    sudo systemctl daemon-reload
    sudo systemctl restart php8.4-fpm
    

    Bei Red Hat ersetzen Sie php8.4-fpm durch php-fpm.

Nach dem Testen entferne die temporäre Umgebungsdatei, den von dir hinzugefügten EnvironmentFile= Eintrag, die Testpool-Einträge und testsql.php. Löschen Sie die Service Override-Datei nur, wenn Sie sie für diesen Test erstellt haben und sie keine weiteren Einstellungen enthält. Behalte alle bestehenden Überschreibungen und Pool-Einstellungen. systemd neu laden und PHP-FPM nach Entfernen der Testkonfiguration erneut neu starten.

SQLSRV-Beispiel

Halte die Umgebungswerte unverändert. Jedes Beispiel prüft auf fehlende oder leere Einstellungen, bevor eine Verbindung hergestellt wird. Jedes Beispiel verdoppelt dann schließende Klammern und fügt äußere Klammern hinzu, bevor der Datenbankname, der Benutzername und das Passwort an den Treiber übergeben werden. Diese Kodierung bewahrt wörtliche Klammern und verhindert, dass Semikolons die Verbindungsoptionen trennen.

<?php
$serverName = getenv('SQL_SERVER_NAME');
$databaseName = getenv('SQL_DATABASE');
$uid = getenv('SQL_UID');
$pwd = getenv('SQL_PWD');

if ($serverName === false || $serverName === ''
    || $databaseName === false || $databaseName === ''
    || $uid === false || $uid === ''
    || $pwd === false || $pwd === '') {
    handle_failure("Set SQL_SERVER_NAME, SQL_DATABASE, SQL_UID, and SQL_PWD.");
}

$databaseName = '{' . str_replace('}', '}}', $databaseName) . '}';
$uid = '{' . str_replace('}', '}}', $uid) . '}';
$pwd = '{' . str_replace('}', '}}', $pwd) . '}';
$connectionOptions = array(
    "Database" => $databaseName,
    "UID" => $uid,
    "PWD" => $pwd,
    "Encrypt" => 1,
    "TrustServerCertificate" => 0
);

function handle_failure($message) {
    error_log($message);
    http_response_code(500);
    echo "<h1>Failure</h1>";
    echo "An error occurred. Check the server error log for details.";
    exit(1);
}

function format_errors($errors) {
    $lines = [];
    foreach ($errors as $error) {
        $lines[] = "SQLSTATE: {$error['SQLSTATE']}, code: {$error['code']}, message: {$error['message']}";
    }
    return implode(PHP_EOL, $lines);
}

$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn === false) {
    handle_failure(format_errors(sqlsrv_errors()));
}

$tsql = "SELECT @@Version AS SQL_VERSION";

$stmt = sqlsrv_query($conn, $tsql);
if ($stmt === false) {
    handle_failure(format_errors(sqlsrv_errors()));
}

$row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);
if ($row === null || $row === false) {
    handle_failure("Query returned no rows.");
}

echo "<h1>Success</h1>";
echo htmlspecialchars($row['SQL_VERSION']);

sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>

PDO_SQLSRV-Beispiel

<?php
$serverName = getenv('SQL_SERVER_NAME');
$databaseName = getenv('SQL_DATABASE');
$uid = getenv('SQL_UID');
$pwd = getenv('SQL_PWD');

if ($serverName === false || $serverName === ''
    || $databaseName === false || $databaseName === ''
    || $uid === false || $uid === ''
    || $pwd === false || $pwd === '') {
    handle_failure(new RuntimeException("Set SQL_SERVER_NAME, SQL_DATABASE, SQL_UID, and SQL_PWD."));
}

$databaseName = '{' . str_replace('}', '}}', $databaseName) . '}';
$uid = '{' . str_replace('}', '}}', $uid) . '}';
$pwd = '{' . str_replace('}', '}}', $pwd) . '}';

function handle_failure($exception) {
    error_log($exception->getMessage());
    http_response_code(500);
    echo "<h1>Failure</h1>";
    echo "An error occurred. Check the server error log for details.";
    exit(1);
}

try {
    $conn = new PDO(
        "sqlsrv:server=$serverName;Database=$databaseName;Encrypt=1;TrustServerCertificate=0",
        $uid,
        $pwd
    );
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $tsql = "SELECT @@Version AS SQL_VERSION";

    $stmt = $conn->query($tsql);
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    if ($row === false) {
        throw new RuntimeException("Query returned no rows.");
    }

    echo "<h1>Success</h1>";
    echo htmlspecialchars($row['SQL_VERSION']);
} catch (Throwable $exception) {
    handle_failure($exception);
}

unset($stmt);
unset($conn);
?>

Zeigen Sie Ihren Browser auf http://localhost/testsql.php (http://localhost:8080/testsql.php unter macOS). Eine erfolgreiche Verbindung zeigt den Versionsstring des Datenbankservers an. Beide Beispiele schreiben Fehlerdetails in das PHP-Fehlerprotokoll. Wenn die Seite einen Fehlschlag zeigt, überprüfe das Protokoll.

Um das Verhalten der Kommandozeile und des Webservers zu vergleichen, setzen Sie dieselben Umgebungsvariablen für Ihr Terminal und führen Sie aus:

php testsql.php

Wenn das Ausführen von der Kommandozeile erfolgreich ist, aber in deinem Browser nichts erscheint, schau dir die Apache-Logdateien an. Für weitere Hilfe siehe Support-Ressourcen für den PHP-SQL-Treiber.

Bewerten Sie die Verbindungsoptionen separat für SQL Server, Azure SQL-Datenbank, Azure SQL Managed Instance, Azure Synapse Analytics, SQL-Datenbank in Microsoft Fabric und Warehouse in Microsoft Fabric. Die gewählte Authentifizierungsmethode, Verbindungsoptionen und Abfrage müssen vom Ziel unterstützt werden. Die Installation erfolgt auf Kundenseite. Eine erfolgreiche Erweiterungsprüfung beweist nicht, dass ein Zielsystem die Zugangsdaten akzeptiert, dem Client vertraut oder jede Datenbankfunktion unterstützt.

Problembehandlung bei der Installation

Symptom Besitzende Ebene Korrekturmaßnahme
PIE kann php-config, phpize oder Header nicht finden PHP-Entwicklungspakete Installiere das Entwicklungspaket für die Ziel-PHP-Version und übergib die passende Option --with-php-config
Die Kompilierung schlägt fehl, weil ein C++-Compiler fehlt Build-Tools für das Betriebssystem Installieren Sie das C++-Compilerpaket der Plattform, wie zum g++ Beispiel oder gcc-c++
Kompilierung kann nicht gefunden werden sql.h Pfade für ODBC-Entwicklungspaket oder Compiler Installieren Sie unixodbc-dev oder unixODBC-devel; auf Apple Silicon setzen Sie die Homebrew-Include- und Bibliotheks-Flags
php --ri sagt, die Erweiterung ist nicht vorhanden PHP-Konfiguration Prüfen Sie das geladene php.ini und Scan-Verzeichnis, fügen Sie den korrekten Eintrag hinzu und starten Sie den Prozess neu
PDO meldet could not find driver Laden von PDO_SQLSRV oder PDO-Ladereihenfolge Stellen Sie sicher, dass PDO zuerst geladen wird und PDO_SQLSRV eine später gescannte Konfigurationsdatei verwendet.
CLI funktioniert, aber bei Apache, nginx oder PHP-FPM tritt ein Fehler auf SAPI-spezifische Konfiguration Vergleichen Sie die CLI-Ausgabe mit phpinfo(), konfigurieren Sie das Web-SAPI und starten Sie es neu
Der Browser gibt HTTP 502 über nginx zurück Routing von nginx zu PHP-FPM Vergleichen Sie den fastcgi_pass Socket mit der installierten PHP-FPM-Version und bestätigen Sie, dass der Dienst läuft
Das Browser-Sample meldet fehlende Umgebungswerte Webserver oder PHP-FPM-Umgebung Konfigurieren Sie die Variablen für die ausgewählte Weblaufzeit und starten Sie sie dann neu
Erweiterungen laden, aber eine Verbindung schlägt fehl ODBC, Netzwerk-, Zertifikats-, Authentifizierungs- oder SQL-Produkt Lesen Sie den SQLSTATE- und den nativen Fehler aus dem Serverprotokoll; bauen Sie die Erweiterung nicht neu auf, es sei denn, der Fehler weist auf ein Lade- oder Binärkompatibilitätsproblem hin.

Temporäre Testkonfiguration entfernen

Nach der Überprüfung:

  1. Löschen Sie testsql.php, verify-php-drivers.php und jede temporäre phpinfo() Seite aus der Dokumentwurzel.

  2. Entfernen Sie temporäre Zugangsdaten und Einträge zur Umgebungsweiterleitung.

  3. Lade den Servicemanager neu, wenn du eine Systemd-Überschreibung änderst, und starte dann PHP-FPM oder den Webserver neu.

  4. Behalte die Erweiterungseinträge und installierten Pakete, die die Anwendung benötigt.