phpenv中修改memory_limit需确认apache实际加载的php.ini路径(如apache\bin\php.ini),设为memory_limit = 512m(单位大写),删掉disable_functions中的ini_set,再彻底重启apache(stop all后start all),最后用phpinfo()验证生效。

phpEnv 是一个 Windows 下的 PHP 集成环境(类似 XAMPP、WAMP),它自带 Apache + PHP + MySQL,但配置路径和重启逻辑与标准环境略有不同——改错文件或漏掉重启步骤,memory_limit 就不会生效。
确认你改的是 phpEnv 真正在用的 php.ini
phpEnv 默认会为 CLI 和 Web 各自加载一份 php.ini,而它通常把 Web 版本放在 Apache 模块目录下,不是 PHP 安装根目录。常见错误是只改了 php\php.ini,但 Apache 实际加载的是 apache\bin\php.ini 或 apache\php\php.ini。
- 在浏览器中访问
phpinfo.php(内容为<?php phpinfo(); ?>),搜索Loaded Configuration File,看路径是不是apache\bin\php.ini这类 - 如果显示为空或
none,说明 Apache 没加载到任何php.ini,此时memory_limit会回退到 PHP 编译默认值(通常是 128M) - CLI 下执行
php --ini查的是另一份,和 Web 无关,别混淆
修改 phpEnv 的 memory_limit 值(必须带单位大写)
找到上一步确认的 php.ini 文件,用记事本或 VS Code 打开,搜索 memory_limit。原始行通常是:
memory_limit = 128M
改成你需要的值,例如:
memory_limit = 512M
- 单位必须是
K、M或G,且大写;写成512m或512mb会被 PHP 解析为 0,反而更糟 - 设为
-1表示不限制,仅限本地调试,上线前务必改回来 - 不要写
1000M这类非 2 的幂次值,PHP 内部按字节换算可能有偏差,推荐用512M、1G
重启 phpEnv 的 Apache 服务(不是“重新启动”面板按钮)
phpEnv 控制面板上的「重启」按钮有时只重载配置,不真正重启 Apache 进程,memory_limit 修改就不会加载。必须彻底停止再启动:
- 点控制面板里的「Stop All」,等状态全变灰
- 再点「Start All」,观察 Apache 状态是否变成绿色并稳定几秒
- 或者直接进任务管理器,杀掉所有
httpd.exe进程,再点 Start - 改完后务必用
phpinfo()页面刷新验证,确认memory_limit显示的是你刚设的值
为什么 ini_set('memory_limit', '512M') 在 phpEnv 里经常失效?
phpEnv 默认启用 disable_functions,且把 ini_set 加进了黑名单。即使你在脚本开头写了这行,也会静默失败,ini_get('memory_limit') 仍返回旧值。
- 打开同一份
php.ini,搜索disable_functions,检查值里是否包含ini_set - 如果包含,删掉它(或整行注释掉),然后同样重启 Apache
- 临时方案:在入口文件(如
index.php)最顶部加error_reporting(E_ALL);,看有没有警告提示函数被禁用 - 注意:
ini_set必须在任何内存操作前调用;若脚本已接近耗尽,它自己就可能触发 OOM 报错
phpEnv 的配置隔离做得不够透明,最容易卡在「以为改了,其实没生效」。每次调整后,用 phpinfo() 确认 Loaded Configuration File 和 memory_limit 两处值,比猜更可靠。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











