質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Q&A

解決済

2回答

1708閲覧

docker pdo_mysql(driver)をダウンロードすることができません。

tou.23.bc

総合スコア50

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

0グッド

0クリップ

投稿2022/08/26 01:16

編集2022/08/29 00:57

前提

当初の質問はdockerにおいてpdoを接続することができないでしたが、そこから原因がpdo driverがはいっていないことだとわかり質問タイトル、内容を変更しました。

dockerfileおよびphp.iniにpdo driverを追加する記述をしたのですがうまくダウンロードすることができません。
どこが間違っているかわかる方、ご指摘いただけないでしょうか?よろしくお願いいたします

以下コードです。

php.ini

1[Date] 2date.timezone = "Asia/Tokyo" 3[mbstring] 4mbstring.internal_encoding = "UTF-8" 5mbstring.language = "Japanese" 6extension=pdo_mysql

index.php

1<?php 2define('DSN', 'mysql:host=mysql;dbname=test;charset=utf8mb4'); 3define('DB_USER', 'test'); 4define('DB_PASS', 'test'); 5 6try { 7 $pdo = new PDO( 8 DSN, 9 DB_USER, 10 DB_PASS, 11 [ 12 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 13 ] 14 ); 15} catch (PDOException $e) { 16 echo $e->getMessage(); 17 exit; 18} 19 20 21?>

dockerfile

1FROM php:7.2-apache 2RUN apt-get update 3RUN apt-get install -y vim 4RUN docker-php-ext-install pdo pdo_mysql 5 6COPY php.ini /usr/local/etc/php/php.ini

docker-compose.ymlです

docker

1version: '3' 2 3services: 4 php: 5 image: php:7.2-apache 6 volumes: 7 - ./php.ini:/usr/local/etc/php/php.ini 8 - ./html:/var/www/html 9 ports: 10 - 8080:80 11 mysql: 12 image: mysql:5.5 13 volumes: 14 - ./mysql:/var/lib/mysql 15 environment: 16 - MYSQL_ROOT_PASSWORD=root 17 - MYSQL_DATABASE=test 18 - MYSQL_USER=test 19 - MYSQL_PASSWORD=test 20 phpmyadmin: 21 image: phpmyadmin/phpmyadmin 22 environment: 23 - PMA_ARBITRARY=1 24 - PMA_HOST=mysql 25 - PMA_USER=test 26 - PMA_PASSWORD=test 27 ports: 28 - 4040:80 29 volumes: 30 - ./phpmyadmin/sessions:/sessions

発生している問題・エラーメッセージ

could not find driver

補足情報(FW/ツールのバージョンなど)

Windowsにwslを使ってubuntu環境を作成して、そこにdockerを入れました。
windows11

また、以下ディレクトリの写真です
イメージ説明

以下phpinfo();の出力内容です。こちらにpdo_mysqlがないためpdoを用いたデータベース接続ができません。

イメージ説明

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

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

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

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

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

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

guest

回答2

0

自己解決

解決しました。
build にキャッシュがあり、それが削除できていなかったようです。

具体的には以下のコマンドを使用しました。

①docker-compose build --no-cache
⇒no cacheオプションでbuild

②docker-compose up -d
⇒コンテナ起動

以上です。

投稿2022/08/30 03:38

tou.23.bc

総合スコア50

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

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

0

「phpinfo」等で「PDO」のドライバがロードされているかを確認してください。
「phpinfo」であれば「PDO」という項目が出てきます。

投稿2022/08/26 02:04

Matsumon0104

総合スコア1005

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

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

tou.23.bc

2022/08/26 03:10

回答いただきありがとうございます。 かくにんしましたがロードされていました。 そちらの写真について、質問の投稿に追加しておきます。
Matsumon0104

2022/08/26 04:10 編集

添付されている画像をみると、「mysql」のドライバではなく、「sqlite」のドライバがロードされています。 「mysql」対応のPDOがロードされる場合、この項目は「mysql」と表示されます。 「php-pdo」をインストールして、ロードできるようにしてください。
tou.23.bc

2022/08/26 05:14

大ヒントをいただいたのですが、うまく実装できないので質問させてください。 https://qiita.com/tarch710/items/1236a23f7ffde4c512f2 こちらのサイトをもとにプロジェクト直下にdockerfileを配置し、コードは上記の画像のように記述しました。 docker-compose up でリスタートを行ったのですがドライバがmysqlに変更されませんでした。 またphp.ini に extension=pdo_mysql  を追記したのですがこちらでもうまくいきませんでした 調べていたのですがどこに間違いがあるのかわからず、ご指摘いただけると嬉しいです。 よろしくお願いいたします
Matsumon0104

2022/08/26 05:31

コンテナの中に「pdo_mysql.so」はありますか?
tou.23.bc

2022/08/26 07:13

docker-compose exec -it php bashでコンテナ内に入りfind pdo_mysql.soでファイル検索しましたがありませんでした。これはつまりインストールできてないということなのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問