最可靠的方法是运行 php --ini(命令行)或 phpinfo()(Web 环境)查看实际加载的 php.ini 路径;Loaded Configuration File 行显示当前生效文件,若为 none 则使用内置默认值。

php.ini 文件通常不在你猜的地方
PHP 启动时会按固定顺序查找 php.ini,不是所有安装方式都把它放在 /etc/php.ini 或 C:\xampp\php\php.ini 这种“常识路径”里。直接去这些目录翻,大概率扑空。
最可靠的办法是让 PHP 自己说——运行 php --ini(命令行)或 phpinfo()(Web 环境),它会明确告诉你加载的是哪个文件、哪些路径被扫描过。
-
php --ini输出里 Loaded Configuration File 行就是当前生效的php.ini路径 - 如果显示 none,说明没加载任何
php.ini,PHP 用的是内置默认值 - Web 环境下,
phpinfo()页面顶部 “Loaded Configuration File” 字段更直观,别只看 “Configuration File (php.ini) Path” 那行(那是搜索路径,不是实际加载的)
不同安装方式的 php.ini 位置差异很大
Homebrew、Docker、XAMPP、系统包管理器(apt/yum)、源码编译……每种方式的配置文件路径规则完全不同,硬背没用,得看 PHP 自己报的路径。
- macOS Homebrew:通常是
/opt/homebrew/etc/php/8.2/php.ini(版本号随安装变) - Ubuntu apt 安装:CLI 和 FPM 可能用不同 ini,CLI 常在
/etc/php/8.2/cli/php.ini,Apache 模块用/etc/php/8.2/apache2/php.ini - Docker 官方镜像:默认不带
php.ini,需挂载或通过php -d覆盖参数 - Windows XAMPP:路径较统一,但注意
php.ini-development和php.ini-production是模板,要重命名为php.ini才生效
改了 php.ini 没生效?先确认这三件事
常见现象是改完重启 Apache/Nginx/PHP-FPM,但 phpinfo() 里的值还是老样子——大概率不是重启失败,而是改错了文件或没匹配到运行模式。
立即学习“PHP免费学习笔记(深入)”;
- CLI 和 Web SAPI 使用的
php.ini很可能不是同一个,用php --ini和phpinfo()分别查,别只改一个 - 某些环境(如 Docker、cPanel)会用
ini目录机制:主php.ini末尾有include_path = "/etc/php/conf.d",实际配置分散在.ini文件里,改主文件无效 - 语法错误会导致整个
php.ini被跳过,PHP 回退到默认值。检查错误日志:php --ini后加-v看警告,或查 Web 服务器 error_log 中是否有Invalid configuration directive类提示
临时覆盖配置比改 php.ini 更安全
调试阶段频繁改 php.ini 容易出错,尤其线上环境。用运行时参数或 .htaccess(Apache)更轻量、可逆。
- CLI 下:直接
php -d memory_limit=512M script.php,-d参数优先级高于php.ini - Apache + mod_php:在项目根目录
.htaccess里写php_value upload_max_filesize 64M(注意仅限 Apache,Nginx 不支持) - PHP-FPM:可在 pool 配置里用
php_admin_value[memory_limit] = 512M,比改全局 ini 更精准
复杂点在于:有些配置项(比如 extension 加载)只能在 php.ini 里设,运行时参数不支持。这类必须改文件,且得确保路径、权限、扩展名(.so/.dll)全对得上。











