Apache kann den PDO-Treiber nicht finden

Apache kann den PDO-Treiber nicht finden

Ich verwende Windows 10 und habe Apache2.4, PHP7.2 und MySQL installiert. Ich habe Probleme bei der Installation des Treibers für pdo_mysql

Ich habe meine php.ini-Datei bearbeitet und im Abschnitt „Erweiterungen“ habe ich:

extension=pdo_mysql

Ich habe außerdem die Direktive extension_dir wie folgt festgelegt:

"C:\php72\ext"

In der Befehlskonsole gebe ich „php -m“ ein und sehe, dass sowohl PDO als auch pdo_mysql aufgelistet sind.

Screenshot der Befehlskonsole, der php -m zeigt

Ich habe Apache neu gestartet, aber wenn ich eine PHP-Datei mit entweder print_r(PDO::getAvailableDrivers());oder ausführe phpinfo(); , sehe ich, dass ich keine Treiber für PDO installiert habe.

In meiner httpd.conf-Datei habe ich

PHPIniDir “C:\php72\”

Ich habe versucht, dies so zu ändern, dass Schrägstriche und umgekehrte Schrägstriche verwendet werden, und den abschließenden Schrägstrich eingefügt bzw. entfernt. Apache wurde nach jeder Änderung neu gestartet. Der pdo_mysql-Treiber lässt sich immer noch nicht laden.

Mir scheint, dass das Problem bei Apache und nicht bei PHP liegt (da das Modul pdo_mysql erscheint, wenn ich php -m in der Befehlskonsole ausführe), aber ich verstehe nicht, was ich falsch gemacht habe. Ich habe nach anderen Leuten gesucht, die das gleiche Problem haben, aber die Lösung schien immer PHPIniDir zu sein, was ich, glaube ich, richtig eingestellt habe.

Auf der Maschine, die ich verwende, lief bereits IIS, daher überwacht Apache Port 8090 und nicht den Standardport. Ich bin nicht sicher, ob das relevant ist oder nicht.

Jede Hilfe wäre willkommen!

Antwort1

Ich habe den Apache-Dienst deinstalliert, C:\Apache24 gelöscht und eine Neuinstallation durchgeführt. Anschließend habe ich die Schritte zur Installation von pdo_mysql wie zuvor befolgt, was funktioniert hat.

Antwort2

Ich hatte dasselbe Problem, dass Module beim Ausführen über die Befehlszeile geladen wurden, jedoch nicht beim Ausführen derselben PHP-Konfiguration über Apache.

extension_dirIn meinem Fall bestand die Lösung darin , in der Datei php.ini den absoluten Pfad des Modulordners festzulegen (in meinem Fall C:\php80\ext).

Jetzt laden sowohl CLI als auch Apache die Module korrekt.

Antwort3

Die dummen Anweisungen zum Einrichten von Fast CGI mit Apache verlangten von mir, die EXE-Datei dort zu platzieren, wo die INI-Datei hingehörte.

# Where is your php.ini file?
FcgidInitialEnv PHPRC "c:/Program Files/php/php.exe" // should be ini

Ich habe das in die INI geändert und es hat funktioniert. Ich bin überrascht, dass PHP mir erlaubt hat, php.exe als INI-Datei festzulegen ...

verwandte Informationen