Zainstaluj sterowniki Microsoft do PHP na Linuksie i macOS

Instrukcje te instalują PHP, sterownik ODBC Microsoft dla SQL Server oraz rozszerzenia SQLSRV i PDO_SQLSRV. Każda zakładka korzysta z pakietu PHP udostępnionego przez repozytorium, z którego dana zakładka instaluje, więc wersja w poleceniach różni się w zależności od zakładki. Zastąp go inną wersją PHP podaną w matrycy wsparcia , jeśli to repozytorium oferuje inną.

Sterowniki SQLSRV i PDO_SQLSRV korzystają z tej samej zależności ODBC i mogą być instalowane niezależnie. Zainstaluj oba rozszerzenia, jeśli Twoja aplikacja korzysta z obu sterowników.

Na końcu procedury CLI i wybrane środowisko uruchomienia serwera WWW powinny ładować oba rozszerzenia, oba API PHP powinny być dostępne, a próbka dla każdego API powinna zwracać wersję serwera bazy danych.

Przed rozpoczęciem

  1. Wybierz wersję PHP wspieraną przez aktualną wersję sterownika i dostępną dla wersji systemu operacyjnego.

  2. Zdecyduj, jakich runtime'ów PHP potrzebujesz:

    • CLI dla skryptów, zaplanowanych zadań lub procesów roboczych.
    • Moduł Apache dla PHP hostowanego w Apache.
    • PHP-FPM dla konfiguracji nginx lub Apache FastCGI.
  3. Potwierdź architekturę systemu operacyjnego. Wydane archiwa Linuksa zawierają pliki binarne x64, a wydane archiwa macOS zawierają pliki binarne Arm64. PIE kompiluje się dla instalacji PHP na komputerze i jest główną ścieżką instalacji opisaną w tym artykule.

  4. Zainstaluj sterownik Microsoft ODBC oraz pakiet programistyczny unixODBC. Pakiet Microsoft obsługuje komunikację z bazą danych. Pakiet unixODBC dostarcza nagłówki niezbędne do budowy SQLSRV i PDO_SQLSRV.

  5. Planuj restartować każdy serwer WWW, pulę PHP-FPM i długotrwały proces roboczy po zainstalowaniu lub zmianie rozszerzenia.

Menedżer pakietów platformy instaluje PHP oraz natywne zależności. PIE buduje i instaluje rozszerzenia PHP. Konfiguracja PHP określa, czy każde środowisko uruchomieniowe je ładuje. Sterownik ODBC obsługuje komunikację bazy danych i szyfrowanie po załadowaniu rozszerzenia.

Zainstaluj sterowniki za pomocą PIE

PIE, czyli instalator PHP dla rozszerzeń, jest obsługiwanym instalatorem rozszerzeń dla aktualnych wersji sterowników. Zastępuje on przestarzały workflow PHP Extension Community Library (PECL).

Przed instalacją sterowników spełnij wymagania wstępne dotyczące platformy w następujących sekcjach. Następnie instaluj PIE i każdy sterownik osobno:

Instalacja PIE

PIE działa na PHP 8.1 i nowszych wersjach. Może zainstalować rozszerzenie w innej instalacji PHP, gdy wybierzesz narzędzia deweloperskie tej instalacji.

Zainstaluj curl oraz GitHub CLI przed kontynuacją. Sekcje platformy obejmują curl tam, gdzie minimalna instalacja może tego nie zapewniać.

Pobierz archiwum PIE PHP (PHAR) i zweryfikowaj je za pomocą interfejsu wiersza poleceń GitHub (CLI) przed instalacją lub uruchomieniem:

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"

Kontynuuj tylko w przypadku sukcesu weryfikacji:

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

Tymczasowy katalog jest prywatny dla twojego konta. Jeśli pobranie lub weryfikacja się nie powiedzie, nie instaluj ani nie uruchamiaj PHAR. Usuń plik tymczasowy i katalog przed ponowną próbą.

Potwierdź, że zainstalowany PHAR działa z plikiem wykonywalnym PHP, którego zamierzasz użyć:

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

Zainstaluj sterowniki SQLSRV i PDO_SQLSRV

Na Linuksie i macOS PIE sprawdza kompilator i narzędzia programistyczne PHP, których potrzebuje. Zainstaluj pakiet deweloperski ODBC dla platformy oraz kompilator C++ przed uruchomieniem PIE. Uruchom PIE w terminalu interaktywnym. Może prosić o sudo twoje hasło, gdy potrzebuje uprawnień do instalacji plików w katalogach systemowych.

PIE jest przeznaczone dla instalacji PHP używanej do jego wywołania. Dla instalacji wersjonowanej dodaj --with-php-config do każdego polecenia instalacji, aby wybrać jego narzędzia deweloperskie. Na przykład używaj pie install --with-php-config=/usr/bin/php-config8.4 microsoft/sqlsrv, gdy zamierzonym narzędziem jest /usr/bin/php-config8.4. Zastosuj tę samą opcję do microsoft/pdo_sqlsrv. Alpine używa wersjonowanych nazw plików wykonywalnych; stosuj polecenia Alpine zamiast niezwersjonowanych poleceń z tej sekcji.

Uruchom jedno polecenie dla każdego rozszerzenia. Te polecenia wykorzystują domyślną instalację PHP PIE:

pie install microsoft/sqlsrv
pie install microsoft/pdo_sqlsrv

PIE próbuje włączyć każde rozszerzenie za pomocą narzędzi konfiguracyjnych PHP platformy lub wpisu extension= i ostrzega, jeśli nie może. PHP wykorzystuje serwerowy interfejs programowania aplikacji (SAPI) dla każdego środowiska wykonawczego. Na Debianie, Ubuntu i SUSE konfiguracje wiersza poleceń, Apache oraz PHP FastCGI Process Manager (PHP-FPM) mogą się różnić. Udana instalacja w wierszu poleceń nie potwierdza, że serwer WWW ładuje sterowniki.

Sprawdź php --ini dla wiersza poleceń. Przed utworzeniem tymczasowej phpinfo() strony serwera WWW ogranicz dostęp do strony diagnostycznej. Sprawdź plik konfiguracji Loaded oraz zeskanowane .ini pliki dla każdego runtime. Jeśli brakuje wpisów, postępuj zgodnie z instrukcjami w Załaduj sterowniki w systemach Linux i macOS, aby dodać je w odpowiedniej kolejności ładowania. Zrestartuj serwer WWW lub PHP-FPM po zmianie konfiguracji. Red Hat często współdzieli php.ini między interfejsami SAPI, ale zweryfikuj aktywną konfigurację przed poleganiem na jednym uruchomieniu PIE.

Zainstaluj na swojej platformie

Wybierz swój system operacyjny i konfigurację serwera WWW. Wykonaj kroki instalacji w tej zakładce, a następnie przejdź do Testowanie instalacji.

Instalowanie w systemie Ubuntu

Uwaga / Notatka

Poniższe polecenia korzystają z repozytorium PHP packages.sury.org, abyś mógł wybrać obsługiwaną wersję PHP. Użyj oficjalnych instrukcji Microsoft, aby zainstalować sterownik ODBC dla wersji Ubuntu.

Krok 1. Instalowanie języka 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

Krok 2. Instalowanie wymagań wstępnych (Ubuntu)

Postępuj zgodnie z instrukcjami w artykule Instalowanie sterownika Microsoft ODBC dla programu SQL Server w systemie Linux, a następnie zainstaluj nagłówki rozwojowe.

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

Krok 3. Zainstaluj sterowniki PHP dla Microsoft SQL Server z PIE (Ubuntu)

Postępuj zgodnie z Zainstaluj sterowniki za pomocą PIE, dodając --with-php-config=/usr/bin/php-config8.4 do obu poleceń instalacji. Sprawdź pliki konfiguracji wiersza poleceń za pomocą 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

Krok 4. Instalowanie oprogramowania Apache i konfigurowanie ładowania sterowników (Ubuntu)

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

Krok 5. Uruchom ponownie oprogramowanie Apache i przetestuj przykładowy skrypt (Ubuntu)

sudo systemctl restart apache2

Aby przetestować instalację, zobacz Testowanie instalacji na końcu tego dokumentu.

Instalacja starszej wersji PECL

PECL jest oznaczony jako przestarzały w aktualnych wydaniach sterowników. Używaj PIE przy nowych instalacjach i aktualizacjach. Jeśli istniejące wdrożenie jest przypięte do PECL, zachowaj wersje pakietów wyrównane z runtime PHP i zaplanuj przejście na PIE.

Przetestuj swoją instalację

Sprawdź środowisko uruchomieniowe wiersza poleceń. Na Alpine zastąp php przez php84. Dla instalacji PHP z oznaczeniem wersji na innej dystrybucji użyj jej odpowiedniego pliku wykonywalnego.

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

Oba --ri polecenia powinny wyświetlać informacje o module, które zawierają ExtensionVer. Lista modułów powinna zawierać oddzielne linie sqlsrv i pdo_sqlsrv.

Przed przetestowaniem połączenia sprawdź, czy oba interfejsy API PHP są dostępne za pomocą 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);

Oczekiwane dane wyjściowe:

SQLSRV: loaded
PDO_SQLSRV: loaded

Dla PHP-FPM lub serwera WWW należy ograniczyć dostęp do stron diagnostycznych przed utworzeniem tymczasowej phpinfo() strony. Potwierdź załadowany plik konfiguracyjny, extension_dir oraz obie sekcje sterowników. Po zmianie konfiguracji lub wymianie rozszerzenia zrestartuj PHP-FPM lub serwer WWW. Usuń stronę po weryfikacji.

Aby przetestować połączenie na żywo, stwórz plik o nazwie testsql.php w katalogu głównym dokumentów systemu. Ta ścieżka znajduje się /var/www/html w systemach Ubuntu, Debian i Red Hat, /srv/www/htdocs w systemie SUSE, /var/www/localhost/htdocs w systemie Alpine lub $(brew --prefix)/var/www w systemie macOS. Ustaw zmienne środowiskowe SQL_SERVER_NAME, SQL_DATABASE, SQL_UID i SQL_PWD dla procesu PHP przed uruchomieniem skryptu. Nie koduj na stałe danych uwierzytelniających w pliku w katalogu głównym dokumentów.

Do testu wiersza poleceń użyj interaktywnych promptów , aby ustawić zmienne środowiskowe bez wprowadzania hasła w historii powłoki.

Na potrzeby testu modułu Apache należy zachować dane uwierzytelniające poza ogólnie czytelnym plikiem konfiguracyjnym strony:

  1. Utwórz prywatny plik poza root dokumentu. Użyj nieużywanej nazwy pliku w katalogu konfiguracyjnym Apache. W systemie Linux:

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

    W Red Hat zastąp /etc/apache2 elementem /etc/httpd. Na macOS utwórz plik z poziomu konta, które uruchamia Apache z Homebrew:

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

    Tylko właściciel pliku i root mogą odczytać te ustawienia. Konto, które uruchamia Apache, musi być w stanie odczytać plik.

  2. Edytuj prywatny plik w edytorze tekstu i dodaj następujące wpisy:

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

    W argumentach z podwójnymi cudzysłowami zapisz \\ dla każdego literalnego ukośnika odwrotnego i \" dla każdego dosłownego podwójnego cudzysłowu. Zachowaj początkowe i końcowe spacje wewnątrz cudzysłowów. Apache również zastępuje odwołania ${NAME}. Jeśli wartość zawiera tę sekwencję lub podział linii, użyj testu wiersza poleceń. Więcej informacji można znaleźć w cytowaniu i znakach ucieczki w konfiguracji Apache.

  3. W wirtualnym hoście strony dodaj blok Files, który zawiera prywatny plik tylko dla testsql.php. Jeśli nie jest skonfigurowany wirtualny host, umieść blok w głównej konfiguracji serwera. Zastąp symbol zastępczy bezwzględną ścieżką prywatnego pliku:

    <Files "testsql.php">
        Include "<absolute-path-to-private-file>"
    </Files>
    
  4. Uruchom ponownie Apache. Po przetestowaniu usuń dodany Files blok, usuń plik prywatny i zrestartuj Apache. Zachowaj niepowiązane ustawienia strony.

PHP-FPM domyślnie usuwa odziedziczone zmienne środowiskowe, a nginx nie przekazuje swojego środowiska do PHP-FPM. Stosuj poniższą procedurę Ubuntu lub Red Hat tylko z izolowaną testową usługą i pulą PHP-FPM. Nie dodawaj danych uwierzytelniających do konta usługi lub puli, która uruchamia inne aplikacje: każdy skrypt w tej puli może je odczytać. Jeśli korzystasz z hostingu współdzielonego, użyj testu wiersza poleceń.

  1. Utwórz plik własności roota poza rootem dokumentu, na przykład /etc/php-sql-driver-test.env, i ogranicz do niego dostęp:

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

    Dodaj ustawienia połączenia do pliku:

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

    Trzymaj każde ustawienie na jednej linii. W cudzysłowie wpisz \\ dla każdego dosłownego ukośnika odwróconego i \" dla każdego dosłownego cudzysłowu. Znaki dolara i backticki nie są oceniane jako wyrażenia powłoki. Edytuj plik bezpośrednio, zamiast uruchamiać lub źródłować go w powłoce. Więcej informacji można znaleźć w składni systemd EnvironmentFile.

  2. Uruchom sudo systemctl edit php8.4-fpm na Ubuntu lub sudo systemctl edit php-fpm na Red Hat. Dodaj to nadpisanie systemd:

    [Service]
    EnvironmentFile=/etc/php-sql-driver-test.env
    
  3. Dodaj te wpisy do konfiguracji aktywnej puli PHP-FPM. Typowe lokalizacje to /etc/php/8.4/fpm/pool.d/www.conf w systemie Ubuntu i /etc/php-fpm.d/www.conf w systemie 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. Przeładuj systemd i zrestartuj odpowiednią usługę PHP-FPM:

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

    W Red Hat zastąp php8.4-fpm elementem php-fpm.

Po testowaniu usuń plik środowiska tymczasowego, dodany EnvironmentFile= wpis, wpisy z puli testowej oraz testsql.php. Usuń plik nadpisania usługi tylko wtedy, gdy stworzyłeś go na potrzeby tego testu i nie zawiera żadnych innych ustawień. Zachowaj wszystkie istniejące nadpisania i ustawienia puli. Przeładuj systemd i uruchom ponownie PHP-FPM po usunięciu konfiguracji testowej.

Przykład usługi SQLSRV

Zachowaj wartości środowiska bez zmian. Każdy przykład odrzuca połączenie w przypadku brakujących lub pustych ustawień przed podłączeniem. Każdy przykład następnie podwaja zamykające klamry i dodaje zewnętrzne klamry, zanim przekaże nazwę bazy danych, nazwę użytkownika i hasło do sterownika. To kodowanie zachowuje dosłowne nawiasy klamrowe i zapobiega rozdzielaniu opcji połączeń przez średniki.

<?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);
?>

przykład PDO_SQLSRV

<?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);
?>

Wskaż przeglądarkę na http://localhost/testsql.php (http://localhost:8080/testsql.php w systemie macOS). Po udanym połączeniu wyświetlany jest ciąg wersji serwera bazy danych. Oba przykłady zapisują szczegóły błędów do dziennika błędów PHP. Jeśli strona pokazuje awarię, sprawdź ten log.

Aby porównać zachowanie wiersza poleceń i serwera WWW, ustaw te same zmienne środowiskowe dla swojego terminala i uruchom to:

php testsql.php

Jeśli uruchomienie z linii poleceń się uda, ale nic się nie pojawi w przeglądarce, sprawdź pliki logów Apache. Aby uzyskać więcej pomocy, zobacz zasoby pomocy technicznej dotyczące sterownika PHP SQL.

Oceń programy do nawiązywania połączeń osobno dla SQL Server, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, bazy danych SQL w Microsoft Fabric oraz Warehouse w Microsoft Fabric. Wybrana metoda uwierzytelniania, opcje połączenia oraz zapytanie muszą być obsługiwane przez element docelowy. Instalacja odbywa się po stronie klienta. Udane sprawdzenie rozszerzenia nie dowodzi, że serwer docelowy akceptuje dane uwierzytelniające, ufa klientowi lub obsługuje wszystkie funkcje bazy danych.

Rozwiązywanie problemów z instalacją

Objaw Warstwa nadrzędna Akcja naprawcza
PIE nie może znaleźć phpize, php-config, ani nagłówków Pakiety programistyczne PHP Zainstaluj pakiet deweloperski dla docelowej wersji PHP i podaj pasującą opcję --with-php-config
Kompilacja nie udaje się, ponieważ brakuje kompilatora C++ Narzędzia do kompilacji systemu operacyjnego Zainstaluj pakiet kompilatora platformy C++, taki jak g++ lub gcc-c++
Kompilator nie może znaleźć sql.h Ścieżki pakietu programistycznego ODBC lub kompilatora Zainstaluj unixodbc-dev lub unixODBC-devel; na Apple Silicon ustaw flagi include i biblioteki Homebrew
php --ri mówi, że rozszerzenie nie jest obecne Konfiguracja PHP Sprawdź załadowany php.ini i katalog skanowania, dodaj poprawny wpis i zrestartuj proces
PDO zgłasza could not find driver Ładowanie PDO_SQLSRV lub kolejność ładowania PDO Potwierdź, że PDO ładuje się najpierw, a PDO_SQLSRV używa pliku konfiguracyjnego skanowanego później
CLI działa, ale Apache, nginx lub PHP-FPM zawodzą Konfiguracja specyficzna dla SAPI Porównaj wyjście CLI z phpinfo(), skonfiguruj internetowy interfejs SAPI i zrestartuj go
Przeglądarka zwraca HTTP 502 za pośrednictwem nginx Kierowanie ruchu nginx do PHP-FPM Sprawdź gniazdo fastcgi_pass względem zainstalowanej wersji PHP-FPM i upewnij się, że usługa działa
Przykład dla przeglądarki zgłasza brakujące wartości środowiskowe Środowisko serwera WWW lub PHP-FPM Skonfiguruj zmienne dla wybranego środowiska uruchomieniowego sieci, a następnie zrestartuj je
Rozszerzenia się ładują, ale połączenie się nie udaje ODBC, sieć, certyfikat, uwierzytelnianie lub produkt SQL Przeczytaj SQLSTATE i natywny błąd z logu serwera; nie przebudowuj rozszerzenia, chyba że błąd wskazuje na ładowanie lub kompatybilność binarną

Usuń tymczasową konfigurację testową

Po weryfikacji:

  1. Usuń testsql.php, verify-php-drivers.php, oraz dowolną phpinfo() tymczasową stronę z korzenia dokumentu.

  2. Usuń tymczasowe poświadczenia i wpisy przekazywania środowiska.

  3. Przeładuj menedżera usług, gdy zmieniasz nadpisanie systemd, a potem zrestartuj PHP-FPM lub serwer WWW.

  4. Zachowaj wpisy rozszerzenia i zainstalowane pakiety, których wymaga aplikacja.