環境
- Windows 10
- PHP 7.2.11
- Apache 2.4.39
- SQLite 3.27.2
現象
- PDO を使ってデータベースに接続、データを取得する処理を記述
- ブラウザから該当ファイルにアクセスすると、could not find driver と表示される
原因
パスが間違っていました...
やったこと
1.事前に
アプリケーションから SQLite を利用するためには sqlite3.dll を利用しなければならないようなので、サイトからダウンロードしてきて C:¥Windows¥System32 に配置しました。
さらに、php.ini の下記の記述のコメントアウトを外して有効化しました。(なければ追記)
extension=php_pdo.dll
extension=php_sqlite.dll
そしてブラウザからアクセスすると、could not find driver (ドライバが見つからない)と言われてしまうのでした。
2.phpinfo を確認
以下のように、 PDO drivers が no value となっています。
3.extension_dir を絶対パスにする
extension フォルダの指定を絶対パスにすると、拡張モジュールをきちんと読み込んでくれるっぽいので、
extension_dir = "ext"
を
extension_dir = "C:/php-7.2.11/ext"
と修正したが、現状は変わらず。
4.再度 phpinfo を確認
記載されている extension_dir のパスが、先ほど指定したものと違うことに気づく。
本当は C:/php-7.2.11/ext を参照してほしいのだが、C:/php/ext を参照している。(C:/php/ext というフォルダは存在しない)
5.httpd.conf を確認
どこかに C:/php/ext を参照する、という記述があるはず。
調査してみると、Apache の設定ファイルに以下の記述を発見。
PHPIniDir "C:/php"
これを以下に変更。
PHPIniDir "C:\php-7.2.11\ext"
6.Apache を再起動
再起動すると、変更したパスがきちんと反映され、ドライバも表示 (SQLiteが追加)されている。
最初は「php」というフォルダ名でインストールしたが、後から「php-7.2.11」と名前を変更した微かな記憶がよみがえる...
最後に
エンジニア歴1年の初心者が、初心者の方の出助けになればと思い、記事を書いています。
間違いがあれば、忌憚なくご指摘いただけると嬉しいです。