访问/php.ini返回404是正常现象,因php.ini不在Web根目录且不响应HTTP请求;应通过php --ini或phpinfo()确认实际加载路径,并重启对应服务(如php-fpm或Apache)使修改生效。

PHP 配置文件本身(php.ini)不会被 Web 服务器直接提供访问,出现 404 Not Found 说明你正试图通过浏览器 URL 访问它,这是预期行为,不是配置错误。
为什么访问 /php.ini 会 404?
Web 服务器(如 Nginx/Apache)默认禁止公开暴露敏感配置文件。php.ini 不在 Web 根目录下,也不参与 HTTP 路由——它只在 PHP 启动时由服务端读取,不响应任何 HTTP 请求。
- 你看到的 404,是因为服务器找不到该路径下的可访问资源,而非 PHP 加载失败
- 真正生效的
php.ini路径需用php --ini(CLI)或phpinfo()(Web)确认,不是靠 URL 猜 - 若误将
php.ini放进/var/www/html/并尝试访问,不仅 404,还可能因配置不当导致下载源码(严重安全风险)
如何确认当前生效的 php.ini 路径?
不要依赖文件系统猜测,用 PHP 自身输出结果最可靠:
php --ini
输出类似:
立即学习“PHP免费学习笔记(深入)”;
Configuration File (php.ini) Path: /etc/php/8.2/cli Loaded Configuration File: /etc/php/8.2/cli/php.ini
Web 环境下,在 PHP 脚本中调用:
在页面中搜索 Loaded Configuration File,该路径才是 Apache/Nginx + PHP-FPM 实际加载的配置文件。
修改后不生效?检查这些关键点
改了 php.ini 却没反应,大概率是没重启对应服务,或改错了文件:
- CLI 和 Web 使用的
php.ini可能不同:CLI 用php --ini查,Web 用phpinfo()查,二者路径常不一致 - PHP-FPM 用户需重启
php-fpm服务,不是只重启 Nginx/Apache:sudo systemctl restart php8.2-fpm - Apache 模块模式下,改完要
sudo systemctl restart apache2 - 检查语法是否正确:
php -c /path/to/php.ini -m(无报错才说明加载成功)
别把 php.ini 放进 webroot
绝对不要把 php.ini 文件复制到 /var/www/html/ 或任何可通过 HTTP 访问的目录下。原因:
- 多数服务器配置下,它会被当作普通文件返回(甚至明文下载),泄露全部配置细节(如数据库密码、扩展路径等)
- 某些错误配置(如
expose_php = On+ 错误 MIME 类型处理)可能触发非预期解析 - 它根本不会被 PHP 运行时读取——PHP 只认启动时指定路径或编译默认路径下的
php.ini
真正要调试的是:你改的那行配置是否在「被加载的那个 php.ini」里,以及对应服务是否已重启。其他所有“找路径→放文件→访问测试”的思路都是南辕北辙。











