You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4 PHP8.2无法写入SQLite文件及扩展加载报错求助

解决树莓派4 PHP 8.2 SQLite 写入失败及扩展加载警告问题

一、处理扩展加载警告

1. 修复sqlite3模块重复加载警告

警告提示Module "sqlite3" is already loaded,说明sqlite3模块被多次加载:

  • 打开CLI的PHP配置文件:sudo nano /etc/php/8.2/cli/php.ini
  • 查找extension=sqlite3或extension=pdo_sqlite的行,若存在则注释掉(在行首加;)
  • 保存退出后,网页环境需重启PHP-FPM:sudo systemctl restart php8.2-fpm,CLI环境直接重新运行测试脚本即可

2. 解决pdo_sqlite加载失败问题

错误提示undefined symbol: php_pdo_unregister_driver,说明pdo_sqlite依赖的PDO核心模块未正确加载或包损坏:

  • 卸载相关扩展包:
    sudo apt purge php8.2-pdo php8.2-pdo-sqlite php8.2-sqlite3
    
  • 重新安装官方包:
    sudo apt update && sudo apt install php8.2-pdo php8.2-pdo-sqlite php8.2-sqlite3
    
  • 安装完成后,运行php test.php | grep sqlite,确认警告消失且PDO drivers显示sqlite

二、解决SQLite写入失败问题

能读取但无法写入,绝大多数是文件/目录权限问题:

1. 确认运行PHP的用户

  • CLI运行脚本:当前登录用户即为运行用户
  • 网页(Nginx/Apache)运行:用户是www-data

2. 设置数据库文件及目录权限

假设你的SQLite数据库路径是/var/www/html/data/db.sqlite:

  • 修改数据库文件所有者:
    sudo chown www-data:www-data /var/www/html/data/db.sqlite
    
  • 修改数据库所在目录的权限(SQLite需要目录权限生成日志/临时文件):
    sudo chown www-data:www-data /var/www/html/data
    
  • 若需临时开放基础权限(不推荐生产环境):
    sudo chmod 755 /var/www/html/data
    

3. 检查sqlite3.defensive配置(可选)

当前sqlite3.defensive = On是默认安全配置,一般不影响正常写入,除非脚本尝试高危操作。若权限确认无误仍无法写入,可临时关闭测试:

  • 打开/etc/php/8.2/cli/conf.d/20-sqlite3.ini(或对应网页环境的配置文件)
  • 添加或修改行:sqlite3.defensive = Off
  • 重启服务后测试

内容的提问来源于stack exchange,提问作者MasterCoder1323

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 09:40:18