必须通过phpinfo()确认Loaded Configuration File路径,再修改对应php.ini;检查httpd.conf中LoadModule和PHPIniDir是否正确配置;重启前需手动结束所有httpd.exe进程,并用httpd.exe -t验证语法。

改完 php.ini 重启 Apache 却没生效?大概率你根本没改对那个文件,或者 Apache 压根没加载 PHP 模块——这不是配置问题,是路径和加载逻辑没理清。
怎么确认当前 Apache 加载的是哪个 php.ini?
别猜,直接看事实。在 XAMPP 的 htdocs 目录下新建一个 info.php 文件,内容只有一行:<?php phpinfo(); ?>。用浏览器访问 http://localhost/info.php,搜索页面里的 Loaded Configuration File 这一行——它显示的路径才是 Apache 实际读取的 php.ini。
常见误区:
- XAMPP 里通常存在两个
php.ini:一个在C:\xampp\php\php.ini(CLI 和多数情况用这个),另一个可能在C:\xampp\apache\bin\php.ini(旧版 Apache 捆绑时放这儿),但只有phpinfo()显示的那个才作数 -
php -i | findstr "php.ini"在命令行跑出来的路径,是 CLI 模式下的配置路径,和 Apache 完全无关
Apache 根本没加载 PHP 模块怎么办?
如果打开 info.php 页面后,压根看不到 “PHP Version” 或整块 PHP 配置信息,说明 Apache 没启用 PHP 模块。这时要检查 C:\xampp\apache\conf\httpd.conf:
- 确认这两行**没被注释**(即前面不能有
#):LoadModule php_module modules/libphp.so(Linux/macOS)或类似php7apache2_4.dll的 Windows 模块名AddHandler application/x-httpd-php .php - 检查
PHPIniDir指令是否明确指向正确的目录,例如:PHPIniDir "C:/xampp/php"—— 注意路径用正斜杠、末尾**不能带斜杠**、也不能用反斜杠,否则 Apache 启动失败且不报错
重启 Apache 的“假成功”陷阱
XAMPP 控制面板点 Stop → Start 看似重启了,其实常有残留进程卡住。必须手动清理:
- 先在控制面板点 Apache 行的 Stop,等状态变成 Stopped 再继续
- 打开 Windows 任务管理器,搜索并结束所有
httpd.exe进程(XAMPP 有时杀不干净子进程) - 再点 Start;或者更可靠地,在命令行运行:
C:\xampp\apache\bin\httpd.exe -t,输出Syntax OK才算配置语法通过 - 最后刷新
info.php,确认修改值已更新
编辑器权限与保存失效的隐形坑
用记事本直接改 php.ini 极易失败——Windows 10/11 默认阻止普通用户写入 C:\xampp 下文件:
- 右键编辑器(如 Notepad++、VS Code)→ “以管理员身份运行”,再打开并编辑文件
- 保存时务必确认编码为
UTF-8 without BOM(BOM 会导致 Apache 解析失败) - 老版本 Notepad++ 在文件被占用时会静默保存到临时位置,表面改了,实际没覆盖原文件——改完立刻进资源管理器,右键文件 → 属性 → 查看“修改时间”是否更新
最常被忽略的一点:XAMPP 的 Apache 和 CLI 是两套独立加载机制,php -v 和 phpinfo() 显示的配置文件几乎从不一致。调 Web 项目,只信 phpinfo() 里那个路径;调命令行脚本,才看 php -i 输出。混用等于白改。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











