web-dev-qa-db-ja.com

MySQLiがドッキングされたphpを見つけられない

私のウェブサイトをドッキングしようとしています。私はNginxと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

8行目の接続線は:

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

これは以前のセットアップでは正常に機能していましたが、新しいセットアップに移動してphp7.1.5をインストールしてから、実行できません。現在、私はmysqlndを使用していないため、これは私の誤解かもしれませんが、mysqlndにはmysqliドライバーが含まれています。

Phpinfoの出力: configmysqlnd

どうすればこれを実行できますか?それとも別のドライバーを使用する必要がありますか?

8
Tom

Dockerfileでphp拡張機能を有効にする必要があります。

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

タッチする必要はありませんphp.ini

16
Robert

同様の問題がありました
php:7-Apache画像、デフォルトではmysqliはインストールされません
これはコンテナ内で確認できます

$ docker exec -it <phpcontainerid> bash  

dockerコンテナー内のbashターミナル

# docker-php-ext-enable mysqli

mysqliがインストールされていない場合、上記のコマンドの出力から知ることができます

# docker-php-ext-install mysqli

次に、この変更をコミットしたので、同じイメージ

$ docker commit -p <phpcontainerid> <new or same image name>
2
Abhishek D K

Php.iniでMysqlI拡張機能が有効になっていないようです。有効にすると、phpinfoにセクションmysqliが表示されます。

拡張機能を有効にする方法の詳細については、こちらをご覧ください: 致命的なエラー:クラス 'MySQLi'が見つかりません

0
Jordi Kroon