phpenv 修改 memory_limit 需区分 cli 和 web 环境:web 用 php\php.ini(重启 apache 生效),cli 用 php-cli.ini 或 -d 参数临时设置;务必通过 php --ini 和 phpinfo() 确认实际加载的配置文件,避免改错路径或进程未彻底重启。

phpEnv 是 Windows 下的便携式 PHP 环境(类似 XAMPP 的轻量替代),它不自带图形界面,所有配置必须手动编辑文件。修改 memory_limit 不能靠点击设置,得找到它实际加载的 php.ini —— 而且 phpEnv 默认会为 CLI 和 Web(Apache)分别加载不同配置,这点容易搞错。
怎么确认 phpEnv 正在用哪个 php.ini
很多人改了文件却没生效,根本原因是改错了配置文件。phpEnv 启动 Apache 时用的是 php\php.ini(位于 Apache 模块路径下),而命令行执行 php -v 时可能读的是 php\php-cli.ini 或根目录下的另一个 php.ini。
- 在 phpEnv 的 Web 页面里访问
phpinfo(),搜索 “Loaded Configuration File”,记下完整路径 - 或在终端中进入 phpEnv 的
php目录,运行:php --ini,看 “Loaded Configuration File” 行 - 如果输出是
(none),说明当前 CLI 没加载任何 ini,得检查是否用了php-cli.ini
直接改 phpEnv 的 php.ini 文件
这是最常用也最稳妥的方式,改完后重启 Apache 才能对 Web 请求生效。
- 用记事本或 VS Code 以管理员身份打开上一步查到的
php.ini路径 - 搜索
memory_limit,通常在 “Resource Limits” 小节附近 - 把原值(如
memory_limit = 128M)改成你需要的,比如memory_limit = 512M;设为-1表示不限制(仅限本地调试) - 保存文件,回到 phpEnv 控制面板,先“停止 Apache”,再“启动 Apache”
- 刷新
phpinfo()页面,确认memory_limit值已更新
CLI 模式下临时调高内存(比如跑 Composer 或 Artisan)
phpEnv 的命令行默认不读 Web 版的 php.ini,所以你在控制台跑脚本报 Allowed memory size exhausted,改 Web 的 php.ini 是没用的。
- 先确认 CLI 加载的是哪个配置:
php -c "D:\phpEnv\php\php-cli.ini" -r "echo ini_get('memory_limit');" - 如果它确实读
php-cli.ini,就去编辑那个文件,同样改memory_limit行 - 或者干脆不改配置,每次执行时加参数:
php -d memory_limit=1G composer install - Windows 用户可建个批处理(
php-large.bat)封装这个命令,避免重复敲
为什么改了还是报内存不足
常见真因不是配置没生效,而是 phpEnv 的 Apache 和 PHP 进程没真正重启干净,或者你压根没改对环境。
- 任务管理器里搜
httpd.exe或php-cgi.exe,杀掉残留进程再启 Apache - 检查是否开了多个 phpEnv 实例,改的是 A 目录的 ini,但浏览器访问的是 B 目录的服务
- 某些 phpEnv 版本会把
php.ini复制到Apache\bin\下并优先读那里,别只盯着php\目录 -
ini_set('memory_limit', '512M')在 phpEnv 中通常可用,但必须写在脚本最开头,且不能晚于任何大数组初始化或require
phpEnv 没有抽象层,所有配置都裸露在文件里。改内存限制这件事本身很简单,难的是确认“此刻正在运行的 PHP 到底认哪个文件”——多看一眼 php --ini 和 phpinfo() 的输出,比盲目改十次更省时间。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











