PHP実行時の警告:"PHP Warning: PHP Startup: Unable to load dynamic library pdo_sqlite 〜 undefined symbol: sqlite3_column_table_name"

SQLiteを使うPHPコードを実行した時に、"PHP Warning: PHP Startup: Unable to load dynamic library pdo_sqlite 〜 undefined symbol: sqlite3_column_table_name"というワーニングが出るようになったので、その時の解決方法について説明しています。

※ 本ページはプロモーションが含まれています。

問題と動作環境

最終更新日:2021/4/20

SQLiteの最新バージョンをソースからインストールして、PDO(php-pdo)をインストールした後に、SQLiteを使うPHPコードを実行した時に警告(Warning)が出るようになってしまいました。

PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib64/php/modules/pdo_sqlite (/usr/lib64/php/modules/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/pdo_sqlite.so (/usr/lib64/php/modules/pdo_sqlite.so: undefined symbol: sqlite3_column_table_name)) in Unknown on line 0

また、ウェブ上でphpinfo()を実行したら、PDO driversの値が"no value"になっていました(本来ならno valueではなくsqliteが表示されるはず)。
phpinfoでPDO driversがno value

動作環境です。

$ cat /etc/system-release
CentOS Linux release 7.9.2009 (Core)

$ httpd -v
Server version: Apache/2.4.6 (CentOS)

$ php -v
PHP 7.4.16 (cli) (built: Mar  2 2021 10:35:17) ( NTS )

$ #ソースからインストールしたSQLite3のバージョン
$ sqlite3 -version
3.35.0 2021-03-12 15:10:09 acd63062eb06748bfe9e4〜

SQLite3をソースからインストールする時に、./configureでCFLAGSオプションを指定する

上記の警告は、SQLite3をソースからインストールした際に./configureコマンドを実行しましたが、./configureコマンドでCFLAGSオプションを指定しなかったのが原因です。

ですので、インストールしたSQLite3を一度アンインストールして(sudo make uninstall)、再度ソースからインストールする際の./configureコマンドでは、CFLAGS="-DSQLITE_ENABLE_COLUMN_METADATA=1"を指定すれば解決できます。

$ CFLAGS="-DSQLITE_ENABLE_COLUMN_METADATA=1" ./configure

SQLite3をソースからインストールする手順と、PHP7からPDOを通してSQLiteを使うまでの手順については別ページで説明していますので、そちらを参考にしてください。
(Amazon Linux2(ec2),CentOS7)SQLite3の最新バージョンをインストールする
【PHP7】PDOでソースからインストールした最新バージョンのSQLite3を使う