如何修改extension_dir或确认设置正确?phpinfo异常及驱动加载问题排查
排查extension_dir不生效&路径来源问题
这种坑我踩过好几次!你改了php.ini却没生效,还看到固定的c:\php\ext,大概率是配置加载优先级或者文件搞错了,咱们一步步来:
1. 先确认你改的是真正在生效的php.ini
打开phpinfo页面,找到Loaded Configuration File这一行——这才是当前Web环境实际加载的php.ini路径!很多人会犯的错:
- 改了PHP目录下的
php.ini-development或php.ini-production,但没把它重命名为php.ini,Apache根本没加载; - Windows系统里可能在
C:\Windows目录下还有一个php.ini,优先级比PHP安装目录的更高。
如果这里显示的路径和你修改的文件不一致,直接去改这个生效的文件就对了。
2. Apache配置可能硬编码了extension_dir
Apache的模块级配置优先级会覆盖php.ini的设置,检查你的httpd.conf或者专门的php配置文件(比如php.conf):
- 找加载PHP模块的段落,有没有类似
php_value extension_dir "c:/php/ext"的行? - 或者
LoadModule php_module那一行后面带了启动参数,比如:LoadModule php_module "c:/php/php8apache2_4.dll" -d extension_dir=c:/php/ext
这些硬编码的设置会直接忽略php.ini里的配置,这就是你改了php.ini却没用的原因。
3. 怎么改成你要的ext相对路径?
要让phpinfo显示ext,同时避免c:\php\c:\php\ext这种错误路径,按下面步骤来:
- 确保生效的php.ini里,把extension_dir改成:
Windows下这个相对路径是相对于PHP的安装目录(也就是extension_dir = "ext"c:\php),所以会自动解析为c:\php\ext,不会出现双重路径。 - 如果Apache配置里有硬编码的extension_dir,要么把它改成
php_value extension_dir "ext",要么直接删掉这行,让系统用php.ini的配置。 - 重启Apache后,一定要用浏览器隐私模式打开phpinfo(避免缓存),确认extension_dir已经变成
ext。
4. 验证小技巧
如果还是不确定问题在哪,可以打开命令行,执行:
php -i | findstr "extension_dir"
看看CLI模式下的extension_dir是不是和Web模式一致。如果CLI改对了但Web没改,100%是Apache的配置在搞鬼。
内容的提问来源于stack exchange,提问作者user9119021
相关产品推荐
相关产品推荐

