[PHP8.0] Fatal error: Uncaught PDOException: could not find driver in php : PDO->__construct('sqlite:...')
カテゴリー: General
2021-02-23
[PHP8.0] Fatal error: Uncaught PDOException: could not find driver in php : PDO->__construct('sqlite:...')
PHP7.4はスキップしたので
PHP8に対応させようとPHP8をインストール, phi.iniをコピペして、
php.ini-developmentと亀の差分表示機能で比較しながら編集保存。
そーれ! webいけーー!!
Fatal error: Uncaught PDOException: could not find driver in php : PDO->__construct('sqlite:...')
なーぜぇーー。(´;ω;`)ウゥゥ
うーん。
phpinfo();
Server API Apache 2.0 Handler
PDO
PDO support enabled
PDO drivers mysql
pdo_mysql
PDO Driver for MySQL enabled
Client API version mysqlnd 8.0.2
pdo_sqliteがない。
php -i
Server API => Command Line Interface
PDO Driver for SQLite 3.x => enabled
SQLite Library => 3.33.0
比較しても同じ値だし、読み込めないなら両方モジュールロードが失敗しないといけないし、Apacheで中途半端に読み込んでいるのもおかしい。
apacheのエラーログを見ると4個ロードに失敗していた。
PHP Warning: PHP Startup: Unable to load dynamic library 'curl' (tried: ) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'intl' (tried: ) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: ) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'sqlite3' (tried: ) in Unknown on line 0
dir "パス" コマンドにいれると表示されるのでパスは間違っていないし、上記以外の他のモジュールはロードされている。
これは、php8apache2_4.dllやpdo_sqliteのバグということで今後のマイナーチェンジに期待。
apacheの本体を更新しないといけないのかもしれないが、確認・更新するのも面倒なので保留。
PHP8.1でも直らなかったら、apacheの更新をしてみようと思います。
せっかくPHP8.0を用意しているので
動作確認はしたい。
ということで
CGIモードに変更して対処
開発環境だし
とりあえず、動くようになって、デバッグもできるのでいいとしよう。
執筆:2021.02.23
編集:2021.02.23
編集:2021.02.23
PHP7.4はスキップしたので
PHP8に対応させようとPHP8をインストール, phi.iniをコピペして、
php.ini-developmentと亀の差分表示機能で比較しながら編集保存。
そーれ! webいけーー!!
Fatal error: Uncaught PDOException: could not find driver in php : PDO->__construct('sqlite:...')
なーぜぇーー。(´;ω;`)ウゥゥ
"C:\...\php" -r "echo (new PDO('sqlite::memory:')?'OK!!':'NG');";
OK!!
OK!!
うーん。
phpinfo();
Server API Apache 2.0 Handler
PDO
PDO support enabled
PDO drivers mysql
pdo_mysql
PDO Driver for MySQL enabled
Client API version mysqlnd 8.0.2
pdo_sqliteがない。
php -i
Server API => Command Line Interface
PDO Driver for SQLite 3.x => enabled
SQLite Library => 3.33.0
Server API | Loaded Configuration File | extension_dir |
Apache 2.0 Handle | 同じ値 | 同じ値 |
Command Line Interface |
比較しても同じ値だし、読み込めないなら両方モジュールロードが失敗しないといけないし、Apacheで中途半端に読み込んでいるのもおかしい。
apacheのエラーログを見ると4個ロードに失敗していた。
PHP Warning: PHP Startup: Unable to load dynamic library 'curl' (tried: ) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'intl' (tried: ) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: ) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'sqlite3' (tried: ) in Unknown on line 0
dir "パス" コマンドにいれると表示されるのでパスは間違っていないし、上記以外の他のモジュールはロードされている。
これは、php8apache2_4.dllやpdo_sqliteのバグということで今後のマイナーチェンジに期待。
apacheの本体を更新しないといけないのかもしれないが、確認・更新するのも面倒なので保留。
PHP8.1でも直らなかったら、apacheの更新をしてみようと思います。
せっかくPHP8.0を用意しているので
動作確認はしたい。
ということで
CGIモードに変更して対処
AddHandler php-script .php
開発環境だし
とりあえず、動くようになって、デバッグもできるのでいいとしよう。