2016-08-08 54 views
0

Ich versuche, eine Symfony 3 App mit PHP 7 von der Quelle installiert und ich bekomme eine Missing PDO Treiber Ausnahme. Laut http://pecl.php.net/package/PDO_MYSQL ist die Erweiterung PDO_MYSQL jetzt Teil des PHP-Kerns.PHP ist fehlende mysql pdo Treiber

Q1.a) Wenn ich die PDO_MYSQL-Erweiterung habe (was ich muss, da sein Kern) bedeutet das, dass ich auch den mysql-pdo-Treiber habe?

Q2.b) Gibt es weitere Laufzeitkonfiguration, die ich tun muss, um sicherzustellen, dass der Treiber verwendet wird?

Ich habe versucht,

extension = php_pdo.so

Erweiterung Zugabe = php_pdo_mysql.so

meine geladene Datei php.ini.

Q2.a) Sind das die richtigen Extension-Namen? Wie könnte ich es herausfinden?
Q2.b) Muss ich sogar Erweiterungsreferenzen für Core-PHP-Elemente angeben?

Endlich:

Q3. Wie kann ich überprüfen, ob meine PHP-Installation den mysql-pdo-Treiber enthält und wie stelle ich sicher, dass er zur Laufzeit geladen wird?

Danke für Ihre Eingabe.

Edit 1: Ich bin auf Linux Mint ausgeführt.
Edit 2: Hier sind ein paar mehr Details über, was ich sehe auf meinem Ende:

„Auf dem eingebauten PHP-Server Starten erhalte ich die folgende Meldung: PHP Warnung: PHP Startup: Kann nicht zu laden, um Dynamische Bibliothek '/usr/local/lib/php/extensions/no-debug-non-zts-20151012/php_pdo.so' -/usr/local/lib/php/Erweiterungen/no-debug-non-zts-20151012/php_pdo.so: kann keine gemeinsame Objektdatei öffnen: Keine solche Datei oder kein Verzeichnis in Unknown in Zeile 0 PHP Warnung: PHP-Start: Dynamische Bibliothek konnte nicht geladen werden '/ usr/local/lib/php/Erweiterungen/no-debug-non zts-20151012/php_pdo_mysql.so '- /usr/local/lib/php/extensions/no-debug-non-zts-20151012/php_pdo_mysql.so: Datei für gemeinsames Objekt kann nicht geöffnet werden: Keine Datei oder Verzeichnis in Unbekannt in Zeile 0 "

Diese Nachricht schlägt mir vor, dass entweder die Erweiterung Referenzen falsch sind oder die Erweiterung nicht vorhanden ist. Ich habe "dpkg -L php-mysql" verwendet und festgestellt, dass das Paket in "/ usr/share/doc/php-mysql" installiert wurde. Wenn ich jedoch das php-mysql-Verzeichnis einchecke, sehe ich nur ein Änderungsprotokoll und a Copyright-Datei (mit versteckten Seiten). Ist dies der wahre Installationsort des Pakets und wenn ja, sollte es mehr in diesem Verzeichnis geben?

+0

Abhängig vom Packer 'pdo_mysql' könnte ein extra Paket sein. So wie es bei dotdebs Jessie-Paketen der Fall ist. –

+0

Schauen Sie in 'phpinfo' und suchen Sie nach PDO MySQL. '

+0

Was bedeutet 'php -m' oder' php -i | grep PDO' sagen? – Ekin

Antwort

2

.so bedeutet, Sie sind auf Linux - haben Sie PHP als Paket installiert. Sie müssen wahrscheinlich das pdo/mysql-Paket installieren - PHP-Bibliotheken können "Core" sein, aber nicht unbedingt im Hauptpaket (verwirrend, aber es bedeutet nur, dass es nicht wirklich PEAR geliefert wird).

sudo apt-get install php5-mysql 

Oder, wenn Sie PHP7 laufen:

sudo apt-get install php-mysql 

Diese automatisch den Apache neu starten sollte, aber sicher sein, Sie tun könnte:

sudo service apache2 restart 

Das Paket-Installer für PHP -mysql sollte die .so Bibliotheken in /usr/lib/php/yyyymmdd/ setzen - wenn Sie PHP als Paket installiert hatten, würde es hier suchen.

Da Sie jedoch von der Quelle installiert haben, scheint PHP an anderer Stelle nach den Bibliotheken zu suchen. Sie können Symlinks von /usr/local/lib/php/extensions/no-debug-non-zts-20151012/ zu den installierten Bibliotheken des Pakets erstellen.

+0

Dies ist eine der Lösungen, die ich versucht, bevor Sie diese Frage stellen. Ich habe es wieder ohne Erfolg versucht. Muss ich nach der Installation dieses Pakets etwas tun, damit es funktioniert? dpkg Befehl sagt, dass es erfolgreich installiert wurde. –

+0

@allen Sie müssen den Webserver neu starten. Wenn Apache 2.4 auf Ubuntu, 'Sudo-Dienst apache2 Neustart ' –

+0

Hallo @ Jeff PuckettII. Gute Gedanken, aber ich habe das schon gemacht. Ich werde in Kürze weitere Informationen zum Hauptbeitrag veröffentlichen, die hoffentlich die Liste möglicher Ursachen eingrenzen werden. –