phpinfo() 显示当前生效的 memory_limit 值,位于 Core 部分和 Directive 的 Local Value 行;ini_get('memory_limit') 可精准获取脚本当前实际值,-1 表示无限制;不一致常见于多 PHP 版本、.user.ini、.htaccess、PHP-FPM 配置或 ini_set() 覆盖。

可以,phpinfo() 能直接显示当前生效的 memory_limit 值,但它只反映运行时配置,不区分是来自 php.ini、.htaccess、ini_set() 还是命令行参数 —— 你看到的是最终结果。
在 phpinfo() 页面里快速定位 memory_limit
打开 phpinfo() 输出页面(比如访问 /info.php),用浏览器 Ctrl+F 搜索:memory_limit。它会出现在两个位置:
-
Core部分:显示当前实际生效值(如128M、-1或256M) -
Directive Local Value / Master Value行:能帮你判断是否被运行时修改过(Local ≠ Master 表示被ini_set()或 .htaccess 改过)
比 phpinfo() 更精准的获取方式:ini_get()
如果只想确认脚本当前能用多少内存,ini_get('memory_limit') 是最轻量、最可靠的方法 —— 它返回的就是 phpinfo() 里 “Local Value” 那一栏的值,且不受输出缓冲或页面渲染影响。
echo ini_get('memory_limit'); // 输出类似 "128M" 或 "-1"
注意:-1 表示无限制(但受系统物理内存和 ulimit 约束),不是“没设置”。
立即学习“PHP免费学习笔记(深入)”;
为什么有时 phpinfo() 显示的值和 php.ini 不一致?
常见原因有这些:
- Web 服务器用了多版本 PHP(比如 Apache 加载了错误的
php.ini,而 CLI 用的是另一个) -
.user.ini文件在当前目录下存在,并覆盖了全局设置(仅对 CGI/FastCGI 有效) - Apache 的
.htaccess里写了php_value memory_limit 256M(仅限 Apache + mod_php) - PHP-FPM pool 配置中设置了
php_admin_value[memory_limit] = 512M(优先级高于php.ini) - 脚本开头调用了
ini_set('memory_limit', '512M')(只对当前请求生效)
命令行下查 memory_limit 要加 -c 指定配置文件
CLI 模式默认不读 Web 服务器用的 php.ini,容易误判。查 CLI 实际生效值,得明确指定配置路径:
php -c /etc/php/8.2/cli/php.ini -r "echo ini_get('memory_limit');"
或者直接看 CLI 加载了哪个 php.ini:
php --ini
漏掉 -c 或用错路径,查出来的就不是你 Web 环境的真实值。
真正麻烦的不是找不到值,而是多个配置层叠加后,你改了 php.ini 却发现没生效 —— 一定先跑一次 phpinfo() 或 ini_get() 确认“此刻实际生效的是谁”。











