Windows10下Apache环境PHP无法加载sqlite3/pdo_sqlite但CLI正常
解决Windows下Apache无法加载PHP sqlite3/pdo_sqlite扩展的问题
我之前在Windows环境配置Apache+PHP的时候也碰到过一模一样的坑,结合你的环境和报错信息,咱们一步步来排查解决:
先明确你的环境
- 操作系统:Windows 10
- Apache 2.4 路径:
C:/Apache24 - PHP 7.4.1 路径:
C:/php7 - 核心问题:命令行
php -m能正常加载sqlite3和pdo_sqlite,但Apache的phpinfo里看不到这两个扩展,且Apache日志报“无法加载动态库”(尽管dll文件确实存在)
排查与解决方案
1. 先查Apache和PHP的位数是否匹配(最常见原因!)
Windows下这种“文件存在但提示找不到”的报错,80%都是位数不兼容导致的:
- 右键点开
C:\Apache24\bin\httpd.exe→ 属性 → 详细信息,看“系统类型”是32位还是64位; - 同样检查
C:\php7\php.exe的位数,必须保证两者完全一致(比如都是32位,或者都是64位); - 如果不匹配,赶紧去官网下载对应位数的Apache或PHP重装,这个是硬伤,其他方法都救不了。
2. 给Apache补上PHP依赖库的访问路径
命令行能加载扩展,是因为运行php.exe时会自动读取它所在目录(C:\php7)的依赖dll(比如sqlite3.dll),但Apache的运行环境PATH里大概率没加C:\php7,所以找不到依赖:
- 解决步骤:
- 右键「此电脑」→ 属性 → 高级系统设置 → 环境变量 → 系统变量里找到
PATH,点击「新建」,添加C:\php7; - 也可以把
C:\php7里的sqlite3.dll复制到C:\Windows\System32(64位系统)或者C:\Windows\SysWOW64(32位系统); - 一定要重启Apache服务(光重启浏览器没用,必须重启Apache服务),环境变量变更才会生效。
- 右键「此电脑」→ 属性 → 高级系统设置 → 环境变量 → 系统变量里找到
3. 核对php.ini的扩展配置有没有写错
虽然你说已经启用了扩展,但还是要仔细检查一遍:
- 确保php.ini里的扩展行是下面两种写法之一(PHP7+都支持):
# 写法1:省略前缀和后缀 extension=pdo_sqlite extension=sqlite3 # 写法2:写全文件名 extension=php_pdo_sqlite.dll extension=php_sqlite3.dll - 注意别拼错单词,比如把
pdo_sqlite写成pdo_sqlite3,或者漏了字母,这种低级错误很容易犯。
4. 检查Apache运行账户的文件权限
有时候Apache的服务账户没有读取C:\php7\ext目录的权限,也会导致加载失败:
- 右键
C:\php7\ext文件夹 → 属性 → 安全 → 编辑 → 添加,找到Apache的运行账户(默认是NT AUTHORITY\SYSTEM,如果是你自定义的账户就选对应的); - 给这个账户添加「读取和执行」「列出文件夹内容」「读取」的权限,应用后重启Apache。
关于日志里的双反斜杠
日志里的C:\\php7\\ext\\...只是日志输出时的转义字符,实际Apache搜索的路径就是C:\php7\ext\...,这个不是问题,不用管它。
内容的提问来源于stack exchange,提问作者C Marius
相关产品推荐
相关产品推荐

