You need to enable JavaScript to run this app. PHP SQLite3扩展加载失败:loadExtension调用出现.so.so重复后缀报错
优惠活动
大模型
产品
解决方案
定价
更多

PHP SQLite3扩展加载失败:loadExtension调用出现.so.so重复后缀报错

问题根因

SQLite3::loadExtension() 方法在Linux环境下会自动给传入的扩展名称拼接.so后缀,所以你传入带.so的文件名时,最终拼接出的路径就是.so.so的重复后缀,这是第一个报错的直接原因。

排查解决步骤

  • 第一步先确认文件本身的状态
    先执行命令检查扩展文件是否存在于目标路径:
    ls -al /usr/lib/php/20180731 | grep libdbplusql_81203
    
    确保输出里存在libdbplusql_81203.so文件,同时确认Apache运行用户(一般为www-data)对该文件有可读可执行权限,权限不对的话执行以下命令修正:
    chmod 755 /usr/lib/php/20180731/libdbplusql_81203.so
    
  • 检查PHP动态加载扩展的开关是否开启
    Apache模式下运行的PHP默认关闭了动态加载扩展的功能,你需要修改Apache对应的php.ini配置文件(通常路径为/etc/php/<你的PHP版本>/apache2/php.ini),找到enable_dl参数,将其设置为On:
    enable_dl = On
    
    修改完成后重启Apache生效:
    systemctl restart apache2
    
    之后代码里调用loadExtension的时候不需要加.so后缀,直接传libdbplusql_81203即可。
  • 更推荐的方案:用php.ini静态加载扩展
    动态加载扩展存在安全风险,生产环境不建议使用,你可以直接在php.ini中添加扩展加载配置,无需在业务代码中处理:
    extension=libdbplusql_81203.so
    
    改完重启Apache即可,同时删掉代码中调用loadExtension的语句。
  • 额外排查:扩展版本兼容性
    如果以上步骤都做完还是加载失败,需要确认你用的libdbplusql_81203.so编译时的PHP版本、线程安全配置和你当前运行的PHP完全匹配,版本不兼容的扩展是无法正常加载的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 19:30:03