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

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

ただいまの
回答率

89.10%

could not find driverから抜け出せない...

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,456

yuriii

score 4

環境

・Windows10
・XAMPP 3.2.4
・PHP7.3.10

前提・実現したいこと

SmartyとPDOを利用して、データベースの中身をhtml表示したい。

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

このメッセージがどうしても出てしまいます。

Error:could not find driver

該当のソースコード

<?php

//テンプレート利用準備
require_once 'smarty/Smarty.class.php';

$smarty = new Smarty();
$smarty->template_dir = 'templates/';
$smarty->compile_dir  = 'templates_c/';

try {
  //データベース接続
  $pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
  $pdo->setAttribute(PDO::ALTER_EMULATE_PREPARES, false);
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  //データ検索
  $stmt = $pdo->query('SELECT * FROM fruits ORDER BY id DESC');

} catch (PDOException $e) {
  exit('データベース接続失敗'.$e->getMessage());
}

//データベース接続終了
$pdo = null;

//結果表示
$smarty->display('index.html');

?>

試したこと

①php.ini のあるディレクトリのPathを通す。

②phpinfo()で確認すると、PDOの欄には、no valueと出ています。
➡ここにmysqlが表示できればいいのですよね...?それが出来ず困っています。

③php.iniの中身を変更。
・extension_dirのディレクトリを、php_pdo_mysql.dllのある場所に変更。
・下記の先頭の;(コメントアウト)を外すした。
extension=php_pdo.dll
extension=pdo_mysql
extension=php_pdo_mysql.dll
extension=mysqli
extension=php_mysql.dll

いろんなサイトを見て試しましたが、どうしても解決できません。
よろしくお願いいたします。

追記(2019.10.24/17:08)
ちなみに、php.iniを編集する際は、XAMPPのApacheのConfigからPHP(php.ini)を押下して開いています。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2019/10/24 16:27

    >PHP5
    マイナーバージョンまで記載してください。

    また、ini編集後、Apache再起動はしましたか?

    キャンセル

  • yuriii

    2019/10/24 16:31

    PHP7.3.10でした。すみません!

    Apacheの再起動はしました!

    キャンセル

  • m.ts10806

    2019/10/24 16:33

    MySQLも起動はしてますよね

    キャンセル

  • yuriii

    2019/10/24 16:34

    はい!しています!

    キャンセル

回答 2

0

https://teratail.com/questions/3447

こちら参考になりそうです

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/24 16:33

    ありがとうございます!
    こちらのサイトも拝見したのですが、サーバがngnixなので、Windowsだと効果がないみたいでした...。

    キャンセル

  • 2019/10/24 16:47

    あとはextension_dirを絶対パスで書いているかどうかですかね
    それと読み込んでるdllの一覧がphpinfo()の画面の中にあると思うんでその中に該当のdllが表示されているか確認してみてください

    キャンセル

  • 2019/10/24 16:57

    phpinfo()のextension_dirの欄には、C:\php\extと書いてあります。
    それをそのまま絶対パスでextension_dirに書いたらいいのでしょうか?
    ➡試してみましたが、変わりませんでした...><

    実際、C:\php\extというディレクトリは存在せず、C:\xampp\php\extというディレクトリにphp_pdo_mysql.dllファイルがあるので、そちらで設定しているのですが、間違いでしょうか?

    キャンセル

  • 2019/10/24 17:09

    それで大丈夫だと思います
    あとはPHPがdllをちゃんと認識しているかの確認ですね

    キャンセル

0

extension=php_pdo.dll
extension=php_pdo_mysql.dll
extension=php_mysqli.dll 

じゃないかな。アイが足りない。

参考:
WindowsでNginx+PHP+MariaDB環境 – テックメモ
Nginx入りのWindows ServerにWordPressを導入する件 - Qiita

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/24 17:18

    修正を加えたphp.iniが正しく保存できていないとか、
    複数箇所にphpを設置していてnginxと連携しているのを見誤っていないかとか、
    点検するべきことはいくつもあるはず。

    キャンセル

  • 2019/10/24 17:19

    すみません><
    一応、よく見比べたのですが、逆にコメントアウトを無駄に外してしまって、エラーになるということもるのでしょうか??
    下記が現状になります!

    extension=bz2
    extension=curl
    extension=fileinfo
    extension=gd2
    extension=gettext
    ;extension=gmp
    ;extension=intl
    ;extension=imap
    ;extension=interbase
    ;extension=ldap
    extension=mbstring
    extension=exif ; Must be after mbstring as it depends on it
    extension=mysqli
    extension=php_mysqli.dll
    ;extension=oci8_12c ; Use with Oracle Database 12c Instant Client
    ;extension=odbc
    ;extension=openssl
    ;extension=pdo_firebird
    extension=pdo_mysql
    ;extension=pdo_oci
    ;extension=pdo_odbc
    ;extension=pdo_pgsql
    extension=pdo_sqlite
    extension=php_pdo.dll
    extension=php_pdo_mysql.dll
    ;extension=pgsql
    ;extension=shmop

    丸投げみたくなってしまい申し訳ないです><

    キャンセル

  • 2019/10/24 18:11

    Windowsの場合は、dllファイル名を指定する恰好なので、
    dllのつかない行をいくら書いても意味がありません。

    キャンセル

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

  • ただいまの回答率 89.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる