私のウェブサイトをドッキングしようとしています。私は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ドライバーが含まれています。
どうすればこれを実行できますか?それとも別のドライバーを使用する必要がありますか?
Dockerfileでphp拡張機能を有効にする必要があります。
FROM php:7
RUN docker-php-ext-install mysqli
タッチする必要はありませんphp.ini
。
同様の問題がありました
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>
Php.iniでMysqlI拡張機能が有効になっていないようです。有効にすると、phpinfoにセクションmysqli
が表示されます。
拡張機能を有効にする方法の詳細については、こちらをご覧ください: 致命的なエラー:クラス 'MySQLi'が見つかりません