LoginSignup
opo6248
@opo6248

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

PHP WEB上ではPDOが正常に機能しているが、Vs codeのターミナルでは could not find driverエラーが起きて使用できない。

解決したいこと

PHP初心者です。
phpでmysqlを使ってみようと思い、pdoを動かすのに必要なpdoドライバーをインストールしましたが,
ターミナルでドライバーがインストールされていないとエラーが起きてしまい動きません。
web上ではしっかりとmysqlとphpを連携できて表示されます。

VS codeでxamppを使おうとwindowsで使用しております。
解決方法を教えてください。

発生している問題・エラー

Fatal error: Uncaught PDOException: could not find driver.

該当するソースコード

PHP

<?php

$dsn ="mysql:host=localhost;dbname=newapp;charset=utf8mb4";
$user ="ユーザー名";
$pass ="パスワード";

$pdo = new PDO(
$dsn,
$user,
$pass,
);

$stmt = $pdo->query('SELECT * FROM users ORDER BY id ASC');
$users = $stmt->fetchAll();
var_dump($users);

?>

自分で試したこと

1.php.iniで以下の項目の;を外しました。

extension_dirは設定しています。

extension=php_pdo.dll
extension=php_pdo_firebird.dll
extension=php_pdo_informix.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_pdo_oci.dll
extension=php_pdo_oci8.dll
extension=php_pdo_odbc.dll

xamppを再起動し、vs codeのターミナルで確認してもエラーコードが表示されてしまいました。

2.phpinfoで確認すると、pdoを動かすために必要なドライバーはしっかり反映されています。

2022-08-15 (2).png

3.ターミナルでphp -mを使用し確認すると、以下のように表示されます。(ここにドライバーが反映されていない?)
[PHP Modules]
bcmath
calendar
Core
ctype
date
dom
filter
hash
iconv
json
libxml
mysqlnd
pcre
PDO
Phar
readline
Reflection
session
SimpleXML
SPL
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

[Zend Modules]

ここでなにが反映されているべきなのかがよく分かりません。vs codeを再起動してみても結果は変わりませんでした。

4.php.iniを再作成してみました

php.iniに余計なことをしてしまったのではないかと再作成しました。
phpinfoでは必要なドライバーが表示され、web上ではpdoが機能しますが、ターミナルではエラー。改善されませんでした。

0

3Answer

Comments

  1. @opo6248

    Questioner
    異なっておりました...ありがとうございます。

ターミナルでphp -mを使用し確認

どのような構成か分かりませんが、FCGI(or モジュール版)とコマンドライン版では動作が異なるケースがあります。
どちらにしても、php.iniのあるディレクトリorパスを名確に指定したほうが良いでしょう。

コマンドならオプション-c "<パス>"で指定します。オプションについては下記参照。

2

Comments

  1. @opo6248

    Questioner
    別のphpファイルのパスを通しておりました。解決できました。
    ありがとうございます。

あぁ、神様。ありがとうございます。
xamppに元から入っているphpとは別に、別のphpファイルをpcにインストールしていました。
1.別にインストールしてしまった。phpファイルを消去
2.環境変数からphpパスをxamppのphpパスに変更。
これでコマンドラインでも使用できるようになりました。
パスの意味をよく理解していませんでした...。基礎を大事にします。
回答してくださった方々、本当にありがとうございました。

0

Your answer might help someone💌