LoginSignup
2
2

More than 3 years have passed since last update.

PDOでSQLite3と接続すると、「could not find driver」と表示されるときに確認したこと

Last updated at Posted at 2019-04-07

環境

  • Windows 10
  • PHP 7.2.11
  • Apache 2.4.39
  • SQLite 3.27.2

現象

  1. PDO を使ってデータベースに接続、データを取得する処理を記述
  2. ブラウザから該当ファイルにアクセスすると、could not find driver と表示される

原因

パスが間違っていました...

やったこと

1.事前に

アプリケーションから SQLite を利用するためには sqlite3.dll を利用しなければならないようなので、サイトからダウンロードしてきて C:¥Windows¥System32 に配置しました。
さらに、php.ini の下記の記述のコメントアウトを外して有効化しました。(なければ追記)

php.ini
extension=php_pdo.dll
extension=php_sqlite.dll

そしてブラウザからアクセスすると、could not find driver (ドライバが見つからない)と言われてしまうのでした。

2.phpinfo を確認

以下のように、 PDO driversno value となっています。
キャプチャ1.PNG

3.extension_dir を絶対パスにする

extension フォルダの指定を絶対パスにすると、拡張モジュールをきちんと読み込んでくれるっぽいので、

php.ini
extension_dir = "ext"

php.ini
extension_dir = "C:/php-7.2.11/ext"

と修正したが、現状は変わらず。

4.再度 phpinfo を確認

記載されている extension_dir のパスが、先ほど指定したものと違うことに気づく。
キャプチャ.PNG
本当は C:/php-7.2.11/ext を参照してほしいのだが、C:/php/ext を参照している。(C:/php/ext というフォルダは存在しない)

5.httpd.conf を確認

どこかに C:/php/ext を参照する、という記述があるはず。
調査してみると、Apache の設定ファイルに以下の記述を発見。

httpd.conf
PHPIniDir "C:/php"

これを以下に変更。

httpd.conf
PHPIniDir "C:\php-7.2.11\ext"

6.Apache を再起動

再起動すると、変更したパスがきちんと反映され、ドライバも表示 (SQLiteが追加)されている。
キャプチャ3.PNG
キャプチャ4.PNG

最初は「php」というフォルダ名でインストールしたが、後から「php-7.2.11」と名前を変更した微かな記憶がよみがえる...

最後に

エンジニア歴1年の初心者が、初心者の方の出助けになればと思い、記事を書いています。
間違いがあれば、忌憚なくご指摘いただけると嬉しいです。

参考

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2