Как решить Uncaught Error: класс 'mysqli' не найден - PullRequest
1 голос
/ 13 апреля 2020

Найдено несколько постов с таким же названием, но я все еще не могу заставить это работать.

Получил три docker контейнера: - один работает mysql - один работает phpmyadmin (и он отлично работает с mysql db) - один работает php: apache, я создал его так:

docker run --network qrstampnet0 --name qrstampweb -d -v /var/qrstamp/www:/var/www/ -p 80:80 -p 443:443 php:apache

При запуске следующего скрипта PHP я получаю ошибка «Uncaught Error: класс« mysqli »не найден»:

$con->connection = new mysqli($mysql_db_hostname, $mysql_db_user, $mysql_db_password);

Поэтому я проверил, если с помощью PHPInfo () и получил следующие результаты:

PHP version 7.4.4

Configure command: './configure' '--build=x86_64-linux-gnu' '--with-config-file-path=/usr/local/etc/php' '--with-config-file-scan-dir=/usr/local/etc/php/conf.d' '--enable-option-checking=fatal' '--with-mhash' '--enable-ftp' '--enable-mbstring' '--enable-mysqlnd' '--with-password-argon2' '--with-sodium=shared' '--with-pdo-sqlite=/usr' '--with-sqlite3=/usr' '--with-curl' '--with-libedit' '--with-openssl' '--with-zlib' '--with-pear' '--with-libdir=lib/x86_64-linux-gnu' '--with-apxs2' '--disable-cgi' 'build_alias=x86_64-linux-gnu'

Configuration File (php.ini) Path: /usr/local/etc/php

, но этот каталог делает не содержит файл php .ini, только: php .ini-development и php .ini-production.

В разделе mysqlnd написано:

loaded plugins: mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_caching_sha2_password,auth_plugin_sha256_password

и следующий код сообщает, что mysqli не загружен.

    if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
    echo 'We don\'t have mysqli!!!';
} else {
    echo 'Phew we have it!';
}

Я много чего пробовал, но не могу заставить это работать. Не уверен, что мне не хватает ....

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Pfff, глупо .... Для моей работающей конфигурации мне просто нужно было скопировать php .ini-production в php .ini. Глупо это было так просто. Немного смущает :-) У меня ушло 3 часа, чтобы понять.

1 голос
/ 13 апреля 2020

Добавьте это в свой Dockerfile:

RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

Или запустите образ и выполните внутри контейнера:

docker-php-ext-install mysqli 
docker-php-ext-enable mysqli
apachectl restart
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...