2017-02-10 2 views
0

Ich verwende das "php: 7.1" Docker-Bild, um die Testumgebung für ein neues Projekt einzurichten. Ich bekomme Fehler beim Versuch, die Funktionen zum Erwerb einer DB-Verbindung zu verwenden.MySQL-Funktionen nicht verfügbar in "php: 7.1" docker image

Ich versuchte, das Docker Bild im interaktiven Modus zu verwenden, um die notwendigen Installationsschritte manuell zu finden:

docker run -i -t php:7.1 /bin/bash 

Ich betreibe die folgenden Schritte, die ich im Netz gefunden, die „mysqli“ Funktionen vorzubereiten:

# update image 
apt-get update 
# install vim for local editing 
apt-get install vim 

ich habe versucht, mysql aus folgendem Beitrag zu installieren: How to enable MySQLi extension in php 7?

apt-get install php-mysql 
Reading package lists... Done 
Building dependency tree 
Reading state information... Done 
E: Unable to locate package php-mysql 

Ich habe versucht, die Erweiterung nur zu aktivieren, aber nicht funktioniert, weil die extenstion nicht nicht vorhanden ist:

extension=php_mysqli.dll 

Fehler:

php info.php |grep mysql 
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20160303/php_mysqli.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20160303/php_mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0 
Configure Command => './configure' '--with-config-file-path=/usr/local/etc/php' '--with-config-file-scan-dir=/usr/local/etc/php/conf.d' '--disable-cgi' '--enable-ftp' '--enable-mbstring' '--enable-mysqlnd' '--with-curl' '--with-libedit' '--with-openssl' '--with-zlib' 
mysqlnd 
mysqlnd => enabled 
Version => mysqlnd 5.0.12-dev - 20150407 - $Id: b396954eeb2d1d9ed7902b8bae237b287f21ad9e $ 
Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_sha256_password 
mysqlnd statistics => 

Ich habe keine Ahnung, was ich tun kann, die Erweiterung installiert werden und aktiviert.

+0

Versuchen Sie den Aufbau Ihrer docker Datei https://phpdocker.io/ mit - - Es verfügt über einen Generator, mit dem Sie die gewünschten Funktionen aktivieren und am Ende eine funktionierende Docker-Datei erstellen können. Wirklich einfach und vermeidet viel Ärger. – Simba

+0

dll ist ein Windows-Zeug. für linux brauchst du also –

+0

ich habe .so als extension benutzt. Dies war ein Kopieren/Einfügen von der Website. – Konrad

Antwort

1

Das liegt daran, dass Sie es falsch machen. Als erstes wird die MySQL-Erweiterung, die alte, in PHP 7+ veraltet. Es existiert auch nicht auf Debian basierten Distributionen. Also, was Sie tun müssen, ist eine Dockerfile mit folgendem Inhalt:

FROM php:7.1 
RUN docker-php-ext-install mysqli && \ 
    docker-php-ext-install pdo_mysql 

und die Befehle ausführen, vorausgesetzt, Sie sind in dem Verzeichnis sind, wo die Dockerfile Leben:

docker build -t <some_tag> . 
docker run -it <some_tag> bash 

Sie werden in die bekommen Prompt des Containers und Sie können dann laufen php -v die Ausgabe etwas sein sollte:

# php -m 
[PHP Modules] 
... 
mysqli ===> MySQLi has been installed 
mysqlnd ===> MySQLnd has been installed 
...