teratail header banner
teratail header banner
質問するログイン新規登録
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

1423閲覧

Dockerで構築したWordPress開発環境でmysqlに独自接続したい

mikeko0901

総合スコア227

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2022/02/18 07:00

0

0

DockerでWordPress+mysql環境を構築しました。

WordPressの環境で別ディレクトリを作成し、mysqlの操作を行いたいのですが、
DB接続の部分で以下のエラーメッセージが表示されてしまいます。

could not find driver

▼こちらフォルダ構成です。

イメージ説明
イメージ説明

wordpress_test  └html   └test   └wp-admin   └wp-content   └wp-includes   └.htaccess   └index.php    ・・・wp系のファイルたくさん  └docker-compose.yml

プロジェクトフォルダ直下にhtmlフォルダ、docker-compose.ymlがあり、
htmlフォルダ直下に、今回追加した独自ディレクトリ「test」を作りました。
そのtestフォルダ配下のformtest.phpでmysqlに接続しています。

▼html>test>formtest.php

<?php function connect_db() { $db_host = "省略"; $db_db_name = "省略"; $db_user_name = "省略"; $db_password = "省略"; global $dbh; try { $dbh = new PDO("mysql:host=" . $db_host . ";dbname=" . $db_db_name, $db_user_name, $db_password); } catch (PDOException $e) { $error_msg = $e->getMessage(); echo("$error_msg"); return false; } return true; } if(connect_db()) { echo("接続OK"); } else { echo("接続失敗"); }

▼こちら、docker-compose.ymlです

version: "3.7" services: db: image: mysql:5.7 container_name: wp_mysql #restart: always environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: 省略 MYSQL_USER: 省略 MYSQL_PASSWORD: 省略 wordpress: image: wordpress:latest container_name: wp #restart: always depends_on: - db ports: - "10090:80" environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: 省略 WORDPRESS_DB_PASSWORD: 省略 WORDPRESS_DB_NAME: 省略 WORDPRESS_DEBUG: 1 volumes: - ./html:/var/www/html phpmyadmin: image: phpmyadmin/phpmyadmin:latest container_name: phpmyadmin_ingrid #restart: always depends_on: - db ports: - 10099:80

全般的に初心者ですが、Dockerでの開発は始めたばかりなので、ここで誤っているかもしれません。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

おそらくwordpressのコンテナにPHPがはいっているんですよね。
であれば、

sh

1> docker exec -it wp /bin/bash

でwordpressのコンテナに入り、

sh

1> php -r "phpinfo();" | grep PDO

と打ってPDO driversのところにmysqlが含まれているか確認してみてください。

投稿2022/02/18 07:13

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikeko0901

2022/02/18 08:01 編集

ありがとうございます。仰る通り、wordpressのコンテナにPHPがはいっているんだと思います。 頂きましたコードを打ってみました。 以下のように出力されました。 PDO PDO support => enabled PDO drivers => sqlite PDO Driver for SQLite 3.x => enabled Firebird driver for PDO => Ard Biesheuvel MySQL driver for PDO => George Schlossnagle, Wez Furlong, Ilia Alshanetsky, Johannes Schlueter ODBC driver for PDO => Wez Furlong Oracle (OCI) driver for PDO => Wez Furlong PostgreSQL driver for PDO => Edin Kadribasic, Ilia Alshanetsky SQLite 3.x driver for PDO => Wez Furlong …PDO drivers => sqliteのあたりでしょうか・・?
mikeko0901

2022/02/19 01:04 編集

ありがとうございます。 取り急ぎ、wordpressのコンテナに入り、 いただいたURLを参考に「docker-php-ext-install pdo pdo_mysql」をしてみましたら、インストールされ、その後 「> php -r "phpinfo();" | grep PDO」で確認してみましたら、以下が出力されました。 ------------ PDO PDO support => enabled PDO drivers => sqlite, mysql PDO Driver for MySQL => enabled PDO Driver for SQLite 3.x => enabled Firebird driver for PDO => Ard Biesheuvel MySQL driver for PDO => George Schlossnagle, Wez Furlong, Ilia Alshanetsky, Johannes Schlueter ODBC driver for PDO => Wez Furlong Oracle (OCI) driver for PDO => Wez Furlong PostgreSQL driver for PDO => Edin Kadribasic, Ilia Alshanetsky SQLite 3.x driver for PDO => Wez Furlong --------------- PDO drivers => sqlite, mysqlとなったのでPDO driversにmysqlが追加されたのですが、 やはりまだ「could not find driver」というエラーが出てしまいます… 何度もすみません…
退会済みユーザー

退会済みユーザー

2022/02/19 01:10

コンテナの再起動がいるかもしれません。 でも起動中のコンテナに入ってインストールしたのだとすると、再起動するとまた元に戻ってしまいそうです。
退会済みユーザー

退会済みユーザー

2022/02/19 01:11

元に戻るようならやはりDockerfileに記述してdocker buildでイメージを作成する必要がありますね。
mikeko0901

2022/02/19 06:51

ありがとうございます!やってみます!
mikeko0901

2022/02/19 08:48

yonakororinさん、 mysqlのPDOができました…!ありがとうございます!!テーブルへのInsertも問題なくできました!! 以下のようにしました。 色々とサイトを見ながらなので、もしかしましたら余計なイメージも作っているかもしれませんが・・・ ①docker-compose.ymlと同じフォルダ(プロジェクトフォルダ直下)にwordpressというフォルダを作成しその中にDockerfileを作成 ②Dockerfileの中身 参考サイト:https://keikenchi.com/steps-to-build-a-wordpress-theme-plugin-development-environment-with-docker ---------------------- FROM wordpress:5.8-php7.4 RUN apt update \ && apt install -y sudo git default-mysql-client subversion \ && curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \ && chmod +x wp-cli.phar \ && mv wp-cli.phar /usr/local/bin/wp \ && wp --info \ && echo 'alias wp="wp --allow-root"' >> ~/.bashrc \ && curl -O https://phar.phpunit.de/phpunit-7.5.20.phar \ && chmod +x phpunit-7.5.20.phar \ && mv phpunit-7.5.20.phar /usr/local/bin/phpunit \ && phpunit --version \ && docker-php-ext-install pdo pdo_mysql ---------------------- ③docker-compose.ymlのwordpressイメージ作成部分をDockerfileで行うように変更 image: wordpress:latestをコメントアウト ④Dockerを作り直す docker compose down ⑤以下のコマンドで再生成 docker compose build ↓ docker-compose up -d
退会済みユーザー

退会済みユーザー

2022/02/19 09:56

よかったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問