php - 使用 PHP 使用 SQLite 的 Nginx 抛出错误
问题描述
我在 docker 中使用 nginx,trafex/php-nginx
但我没有让 SQLite 工作。以下php代码
<?php
$db = new SQLite3('/var/private/anmeldungen.db');
$db->close();
抛出此错误[error] 9#9: *33 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Class "SQLite3" not found in /var/www/html/phpinfo.php:3
我正在使用 dockerfile 来安装 sqlite 包:
FROM trafex/php-nginx:latest
USER root
RUN apk add php8-pdo_sqlite
USER nobody
有人有想法吗?
解决方案
你的包是错误的,PDO 是 PHP 数据对象,它是一个更高层,旨在能够与任何较低的数据库协议(如 SQLite、MySQL、Postgres ......)一起工作,因此从长远来看,通过 PDO 实现可能会对你有很大帮助你想切换到另一个数据库而不改变你的源代码太多(可能有一些不兼容的功能但不多)。
要通过 PDO 初始化 SQLite,您必须这样做:
$dbh = new PDO('sqlite:/tmp/foo.db');
您可以在此处阅读更多相关信息https://www.php.net/manual/en/ref.pdo-sqlite.php。
如果你想坚持使用原生 SQLite(使用你的 SQLite3 类),你必须安装包php8-sqlite3
而不是php8-pdo_sqlite3
apk add php8-sqlite3
这将适用于您当前的代码。