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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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スクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

5145閲覧

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

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スクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿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接続情報は質問用に書き換えています。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Bash

1sudo apt-add-repository ppa:ondrej/php 2sudo apt-get update

をしてまたインストールしてみてください

投稿2022/01/09 17:02

skys215

総合スコア910

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

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

ShiroNeco

2022/01/10 03:19

ご回答ありがとうございます 下記の手順で各種インストール等を実施し #apt update ← software-properties-commonが認識しなかったので先に更新 #apt-get install -y software-properties-common ←repositoryが認識しなかったので追加 #apt install gpg-agent ←gpgがないというエラーになったので追加 #apt-add-repository ppa:ondrej/php #apt-get update ← 5つのサイトに接続中、最後の1つが404になっていますがエラーは出ていません #service apache2 restart ←一応再起動 再インストールを試みましたが、「has no installation candidate」になって、インストールできませんでした。 #apt -y install php7.4 #apt -y install php7.4-mysql これは「#apt-add-repository ppa:ondrej/php」の辺りが正しく更新できていないということなのでしょうか?
ShiroNeco

2022/01/10 05:46

DockerFileを作成し、 phpインストール時にpdo_mysqlも併せてインストールすることで解決できました ありがとうございました! 「RUN apt-get update && \ docker-php-ext-install pdo_mysql」
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問