基于trafex/php-nginx镜像的Docker环境SQLite3类未找到报错如何解决
问题根因
你当前安装的php8-pdo_sqlite仅为PDO接口的SQLite驱动,仅支持通过PDO类操作SQLite数据库,而你代码中使用的SQLite3是PHP独立的原生SQLite扩展,二者属于不同的软件包,因此会报类不存在的错误。
解决方法
你可以根据需求选择任意一种方案:
方案1:保留现有代码,安装原生SQLite3扩展
修改Dockerfile,在安装扩展的命令中补充php8-sqlite3包:
FROM trafex/php-nginx:latest USER root RUN apk add --no-cache php8-pdo_sqlite php8-sqlite3 # 可选:提前创建数据库目录并分配权限,避免后续读写报错 RUN mkdir -p /var/private && chown nobody:nobody /var/private USER nobody
修改后重新构建镜像、启动容器即可正常使用new SQLite3()语法。
方案2:改用PDO语法操作数据库(无需额外安装扩展)
将你的PHP代码调整为PDO写法即可复用已安装的pdo_sqlite扩展:
<?php $db = new PDO('sqlite:/var/private/anmeldungen.db'); // 数据库操作逻辑 $db = null; // 关闭连接
验证方法
容器启动后执行命令php -m | grep sqlite,如果输出同时包含pdo_sqlite和sqlite3,说明扩展已全部安装成功。
内容的提问来源于stack exchange,提问作者White
相关产品推荐
相关产品推荐

