it-swarm.com.de

PHP 7 RC3: So installieren Sie fehlende MySQL-PDOs

Ich versuche, den Webserver mit PHP 7 RC3 + Nginx auf Ubuntu 14.04 (zu Testzwecken) einzurichten.

Ich habe Ubuntu in Vagrant mit ubuntu/trusty64 und PHP 7 RC 3 von Ondřej Surý ( https://launchpad.net/~ondrej/+archive/ubuntu/php-7.0 ) installiert.

Ich kann den Weg zur Installation von MySQL PDO nicht finden (PHP sieht PDO-Klasse, aber nichts im Zusammenhang mit MySQL, wie PDO::MYSQL_ATTR_DIRECT_QUERY usw.).

Es scheint, als gäbe es keine lib php7.0-mysql (analog zu Standard php5-mysqlnd und php7.0-fpm etc. von Ondřej)

Abschnitt PDO in phpinfo():

PDO support      enabled
PDO drivers      no value

Wie kann ich es bekommen?

37
SmxCde

Da eggyal seinen Kommentar nicht als Antwort abgegeben hat, nachdem er den richtigen Rat in einem Kommentar gegeben hat, poste ich ihn hier: In meinem Fall musste ich das Modul php-mysql installieren. Siehe Kommentare unter der Frage für Details.

3
SmxCde

Wenn Sie Linux mit Apache2 ausführen, müssen Sie php-mysql installieren

apt-get install php-mysql

oder wenn Sie ubuntu 16.04 oder höher ausführen, reicht es aus, den folgenden Befehl auszuführen

apt-get install php7.0-mysql

Wenn Sie Ubuntu 15.10 oder niedriger ausführen:

Bearbeiten Sie Ihre php.ini - Datei und suchen Sie nach pdo_mysql

;extension=pdo_mysql.so

Ändern Sie es zu diesem

extension=pdo_mysql.so

Speichern Sie die Datei und starten Sie Apache neu

service Apache2 restart

Prüfen Sie, ob es in Ihrer phpinfo () verfügbar ist.

81
Angel115

Installieren Sie zuerst php-mysql

Sudo apt-get install php7.0-mysql

aktivieren Sie dann das Modul

Sudo phpenmod pdo_mysql

und starten Sie Apache neu

Sudo service Apache2 restart 
19
StateLess

Prüfen Sie zunächst, ob in Ihrer php.ini die Erweiterung "php_pdo_mysql" und "php_mysqli" aktiviert ist und der Pfad von "extension_dir" korrekt ist. Wenn Sie eine der oben genannten Konfigurationen benötigen, müssen Sie php-fpm neu starten, um die Änderungen zu übernehmen.

In meinem Fall (wo ich das Windows-Betriebssystem in der Firma verwende, bevorzuge ich wirklich OSX oder Linux), habe ich das Problem mit der Eingabe dieser Werte in der php.ini gelöst:

; ...

extension_dir = "ext"

; ... 

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

; ...

Ich hoffe das hilft.

3
  1. laden Sie den Quellcode von PHP 7 herunter und extrahieren Sie ihn.
  2. öffne dein Terminal
  3. schwimmen Sie in das Verzeichnis ext/mysqli 
  4. verwenden Sie die Befehle:

    phpize

    ./konfigurieren 

    make

    install installieren (als root) 

  5. aktivieren Sie extension = mysqli.so in Ihrer php.ini-Datei
  6. erledigt!

Das hat bei mir funktioniert

2
micl

Wenn Sie sich unter Windows befinden und sich Ihr PHP-Ordner nicht in Ihrem PFAD befindet, haben Sie das absolute Verzeichnis in Ihrer php.ini festgelegt

zum Beispiel:

extension_dir = "C:/php7/ext"

und unkommentiert 

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

Starten Sie Apache2.4 neu und es sollte funktionieren.

Ich hoffe, es hilft.

2
user1455180

Hatte das gleiche Problem, behoben, indem die Erweiterung in der php.ini tatsächlich mit dem richtigen Dateinamen aktiviert wurde. Es wurde als php_pdo_mysql.so aufgeführt, der Modulname in/lib/php/modules wurde jedoch nur als pdo_mysql.so bezeichnet

Entfernen Sie einfach das Präfix "php_" aus der Datei php.ini, und starten Sie den httpd-Dienst neu. Es funktioniert wie ein Zauber.

Bitte beachten Sie, dass ich Arch verwende und daher Pfadnamen und Dienste abhängig von Ihrer Distribution unterschiedlich sein können.

1
Xorifelse

Ich hatte so ziemlich das gleiche Problem. Ich konnte sehen, dass PDO aktiviert war, aber ich hatte keine verfügbaren Treiber (mit PHP 7-RC4). Es ist mir gelungen, das Problem zu beheben, indem die Erweiterung php_pdo_mysql zu den aktivierten hinzugefügt wurde.

Hoffe das hilft!

1
jgadrow
['class' => 'yii\db\Connection',
    'dsn' => 'mysql:Host=localhost:3306;dbname=testdb',
    'username' => 'user',
    'password' => 'password',
    'charset' => 'utf8',]

Es ist ganz einfach: Geben Sie einfach die Portnummer zusammen mit dem Hostnamen an und setzen Sie den Standard-Sockenpfad auf Ihr mysql.sock Dateipfad in php.ini auf dem der Server läuft.

0
Dhanush-uc

Ich beginne mit der Antwort und dem Kontext. ANMERKUNG Dieses Update wurde oben protokolliert. Ich stelle es nur für alle Personen wieder her, die googeln.

  1. Laden Sie den Quellcode von PHP 7 herunter und extrahieren Sie ihn.
  2. öffne dein Terminal
  3. schwimmen Sie in das Verzeichnis ext/pdo_mysql
  4. verwenden Sie Befehle:

    phpize

    ./konfigurieren

    make

    install installieren (als root)

  5. aktivieren Sie extension = mysqli.so in Ihrer php.ini-Datei

Dies wird von hier aus als Antwort protokolliert (bitte melden Sie sich, wenn es Ihnen auch geholfen hat): https://stackoverflow.com/a/39277373/3912517

Kontext: Ich versuche, LimeSurvey zum Standard-WordPress-Docker hinzuzufügen. Der einzige Punkt, der mich zurückhält, ist "PHP PDO driver library", also "None found".

php -i | grep PDO                                                                                  
PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_odbc' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc.so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  Module 'mysqli' already loaded in Unknown on line 0
PDO
PDO support => enabled
PDO drivers => sqlite
PDO Driver for SQLite 3.x => enabled

Ubuntu 16 (Ubuntu 7.3.0)

apt-get install php7.0-mysql

Ergebnis:

Package 'php7.0-mysql' has no installation candidate

Holen Sie sich Anweisungen, die besagen, dass ich nur Folgendes ausführen muss:

add-apt-repository -y ppa:ondrej/Apache2

Aber dann bekomme ich das:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 223: ordinal not in range(128)

Also versuche ich eine Art von UTF zu erzwingen: LC_ALL = C.UTF-8 add-apt-repository -y ppa: ondrej/Apache2 Und ich erhalte Folgendes: Keine gültigen OpenPGP-Daten gefunden.

Befolgen Sie einige andere Anweisungen, um das auszuführen: Apt-get update Und ich erhalte Folgendes: Err: 14 http://ppa.launchpad.net/ondrej/Apache2/ubuntu cosmic/Haupt-AMD64-Pakete 404 Nicht gefunden Err: 15 http://ppa.launchpad.net/ondrej/php/ubuntu cosmic/main AMD64-Pakete 404 Nicht gefunden Und ich glaube, deshalb bekomme ich:

The repository 'http://ppa.launchpad.net/ondrej/Apache2/ubuntu cosmic Release' does not have a Release file.

Zu diesem Zeitpunkt bekomme ich immer noch das apt-get Update:

Package 'php7.0-mysql' has no installation candidate.

Ich fange an, PHP-Bibliotheken hinzuzufügen, habe Unicode-Probleme, habe versucht, das zu umgehen und ... Sie bekommen die Idee ... Whack-a-Mole. Ich gab auf und schaute, ob ich es kompilieren konnte und fand die Antwort, mit der ich angefangen hatte. 

Sie fragen sich vielleicht, warum ich so viel geschrieben habe? Damit jeder, der googelt, diese Lösung finden kann (auch ich!).

0
user3912517