php配置不生效的首要原因是cli与web环境加载不同php.ini文件,需先通过phpinfo()确认loaded configuration file路径,再检查apache是否加载php模块、extension_dir是否正确、扩展dll是否存在,最后确保重启服务且文件编码为utf-8无bom。

PHP配置不生效,通常不是改了php.ini就自动起效——XAMPP中存在多个php.ini文件、CLI与Web环境加载路径不同、Apache未重载模块、甚至扩展路径写错,都会导致你改的配置“看起来没用”。下面按实际排查顺序给出完整修复步骤。
确认当前生效的是哪个 php.ini
很多人直接去C:\xampp\php\php.ini修改,却不知道浏览器访问时 Apache 加载的可能是另一个文件。最可靠的方法是:
- 打开浏览器,访问 http://localhost/xampp/phpinfo.php(或点击 XAMPP 控制面板的 PHPInfo 按钮)
- 在页面顶部找 Loaded Configuration File 这一行,记下它显示的完整路径(例如:
C:\xampp\php\php.ini) - 这个路径才是 Apache + PHP 实际读取的配置文件,其他位置的
php.ini改了也无效
检查 Apache 是否真正加载了 PHP 模块
即使php.ini路径正确,如果 Apache 根本没加载 PHP 模块,所有配置都白搭。需验证两处:
- 打开
C:\xampp\apache\conf\httpd.conf,搜索LoadModule php7_module,确保这一行未被注释(前面没有#),且路径指向你当前 PHP 目录下的php7apache2_4.dll(如:LoadModule php7_module "C:/xampp/php/php7apache2_4.dll") - 继续在
httpd.conf中搜索AddHandler application/x-httpd-php .php,同样确认未被注释 - 保存后,在 XAMPP 控制面板中完全停止再启动 Apache(不能只点 Restart)
区分 CLI 和 Web 环境的配置差异
你在命令行运行php -v或php --ini看到的配置,和浏览器里phpinfo()显示的,很可能是两个文件:
-
CLI(命令行):通常加载
C:\xampp\php\php.ini(或php-cli.ini) -
Web(Apache):加载的是
httpd.conf中指定路径的php.ini,也就是上面phpinfo()里显示的那个 - 比如你调高
memory_limit,却在网页里仍报内存不足,大概率是你改错了 CLI 的php.ini,而 Web 环境用的是另一个
验证扩展是否真被启用
开启extension=openssl或extension=mysqli后没反应?别只看php.ini里有没有这行,还要确认:
-
extension_dir路径是否正确(例如:extension_dir = "C:/xampp/php/ext"),注意斜杠方向和末尾无多余空格 - 对应 DLL 文件确实存在于
ext目录下(如php_mysqli.dll),文件名拼写必须完全一致(区分大小写在 Linux/macOS 中敏感) - 在
phpinfo()页面搜索扩展名(如mysqli),有表格出现才代表已加载;若只有“enabled”字样但无模块信息,说明加载失败
常见低级但高频的错误点
这些细节看似简单,却常被跳过导致反复折腾:
-
php.ini文件被另存为 UTF-8 with BOM 编码 → Apache 启动失败或配置不识别 → 用 Notepad++ 或 VS Code 保存为 UTF-8 无 BOM - 修改后忘记重启 Apache(仅刷新网页无效)
- 使用了中文路径或含空格的路径(如
C:\Program Files\xampp)→ 建议重装到纯英文无空格路径,如C:\xampp - 防火墙或安全软件拦截了 Apache 对
php.ini的读取 → 临时关闭测试
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











