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

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

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

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

MySQL

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

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

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

解決済

PHPからMySQLに接続時に「could not find driver」

ShiroNeco
ShiroNeco

総合スコア1

docker-compose

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

MySQL

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

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

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

1回答

0評価

0クリップ

391閲覧

投稿2022/01/09 15:43

はじめまして、白猫です。
初めてLinux+PHPの環境を作成しており、PHPからMySQLに接続できません。
LinuXのコマンドやエラーがよく分からず調べながら進めていましたが、
手詰まりになってしまったのでご教授頂きたいです。
またteratailも初めてで至らないところがあると思いますがよろしくお願いします。

前提・実現したいこと

PHPからPDOを使用してMySQLに接続したいです。
今の構築した環境は大きく変えず**「pdo_mysql」**をインストールして接続できるようになれば理想です。

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

**「could not find driver」**ドライバーが見つかりませんとエラーになります。

Fatal error: Uncaught PDOException: could not find driver in /var/www/html/public_html/XXX.jp/test.php:35 Stack trace: #0 /var/www/html/public_html/XXX.jp/test.php(35): PDO->__construct('mysql:host=db;d...', 'XXX01', 'XXX01...') #1 {main} thrown in /var/www/html/public_html/XXX.jp/test.php on line 35

試したこと

(1)PDOが入っていないと思い「pecl install pdo_mysql」を実行しましたがエラーになりました。
実行後、https://teratail.com/questions/102645 を見て、apt-getが必要だと知りました。

WARNING: "pecl/PDO_MYSQL" is deprecated in favor of "channel://http://svn.php.net/viewvc/php/php-src/trunk/ext/pdo_mysql//ext/pdo_mysql" WARNING: "pecl/PDO" is deprecated in favor of "channel://http://svn.php.net/viewvc/php/php-src/trunk/ext/pdo//ext/PDO" ~ make: *** [Makefile:217: pdo.lo] Error 1 ERROR: `make' failed

(2)「apt-get install php7.0-mysql」を実行しましたが、見つからないようでした。

Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package php7.0-mysql E: Couldn't find any package by glob 'php7.0-mysql' E: Couldn't find any package by regex 'php7.0-mysql'

(3)状態を確認するために「phpinfo()」を確認しました。
・PDO(PDO support)には、sqliteしか記載されておりませんでした。
・PHP Creditsには、「MySQL driver for PDO」の記載がありませんでした。

(4)phpMyAdminからは、対象のDB(MySQL)に接続できます。

(5)レンタルサーバー上のPHPから
レンタルサーバーのMySQLには接続できています。

環境

・Linux(WindowsからDockerで環境作成)
・composeにて「php:7.4-apache」「mysql:5.7」「phpmyadmin」の環境を作成

該当のソースコード

<?php // データベース情報 define('DB_DATABASE','XXX01'); define('DB_HOST','db'); define('DB_USERNAME','XXX01'); define('DB_PASSWORD','XXX01'); define('PDO_DSN','mysql:host='.DB_HOST.';dbname='.DB_DATABASE); echo PDO_DSN; // DB接続 $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // エラーをスロー ?>

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

関係ない箇所と思いますが、念のためにその他の変更箇所です。
・apache2の000-default.confを
「DocumentRoot /var/www/html」⇒「DocumentRoot /var/www/html/public_html/XXX.jp」に変更
・htaccessを作成、htaccessに「RewriteEngine On」を記載
・DB接続情報は質問用に書き換えています。

よろしくお願いします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

docker-compose

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

MySQL

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

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

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