2017-10-22 1 views
0

Ich versuche, meine Website zu docken. Ich habe Nginx und PHP hoch und läuft und es funktioniert, aber ich kann keine Verbindung zu einer db herstellen. Wenn die Seite geladen wird, erhalte ich die Fehlermeldung:MySQLi nicht gefunden dockerized php

Fatal error: Uncaught Error: Class 'MySQLi' not found in /private/conn.php:8 Stack trace: #0 /public_html/index.php(2): require() #1 {main} thrown in /private/conn.php on line 8 

Meine Verbindungsleitung auf der Linie 8:

$db = new mysqli("$host", "$user", "$pass", "$db", "$port"); 

Nun ist diese auf meinem altes Set up funktionieren verwendet, aber da zu einem neuen beweglichen und installiere php7.1.5 Ich kann es nicht laufen lassen. Nun, ich habe den mysqlnd nicht benutzt, daher mag das meinerseits ein Missverständnis sein, aber mysqlnd enthält den mysql-Treiber.

Ausgabe von phpinfo: config mysqlnd

Wie kann ich diese zum Laufen zu bringen? Oder sollte ich jetzt einen anderen Treiber verwenden?

+0

Können Sie die Dockerfile anzeigen? Sie müssen Erweiterungen dort aktivieren, aber es hängt davon ab, was Ihr Basis-Image ist. – Robert

+0

Ich benutze das PHP: fpm von hier [https://hub.docker.com/_/php/](https://hub.docker.com/_/php/) – Tom

Antwort

0

Es scheint, als ob Sie nicht die MysqlI-Erweiterung in Ihrer php.ini aktiviert haben. Wenn aktiviert, sollte ein Abschnitt mysqli in Ihrem phpinfo angezeigt werden.

Weitere Informationen über die Erweiterung ermöglichen kann hier gefunden werden: Fatal error: Class 'MySQLi' not found

+0

Ich habe 'extension = php_mysqli hinzugefügt .dll' zu meiner 'php.ini' Datei aber keine Änderung. Muss es installiert werden? und wenn ja - was ist MySQLnd? – Tom

+0

Ich denke, es ist standardmäßig installiert, aber Sie müssen zuerst Apache neu starten. http://php.net/manual/de/mysqli.installation.php –

1

Sie müssen die PHP-Erweiterung in Ihrem Dockerfile aktivieren:

FROM php:7 
RUN docker-php-ext-install mysqli 

Es besteht keine Notwendigkeit php.ini zu berühren.