PHP命令行运行时允许内存耗尽致命错误求助
解决CLI环境下PHP内存耗尽问题(Web环境正常)
这种Web和CLI执行结果不一致的情况其实挺常见的,核心原因大概率是CLI模式和Web模式使用了不同的php.ini配置文件——你之前调整的可能只是Web环境的配置,CLI环境根本没读到修改后的参数。下面一步步来解决:
1. 确认CLI使用的php.ini文件
先执行这条命令,找到CLI模式加载的配置文件路径:
"C:\Program Files (x86)\iis\PHP\v5.6\php.exe" --ini
输出里会有一行Loaded Configuration File,后面的路径就是CLI实际用的php.ini文件(如果显示(none),说明CLI加载的是PHP安装目录下的默认配置模板)。
2. 修改CLI专用的php.ini配置
找到上述文件并打开,定位到memory_limit项,修改为你需要的值,比如:
memory_limit = 512M
保存文件后,执行下面的命令验证修改是否生效:
"C:\Program Files (x86)\iis\PHP\v5.6\php.exe" -r "echo ini_get('memory_limit');"
如果输出是512M,说明配置已经成功生效。
3. 排查脚本本身的内存泄漏问题
如果修改配置后还是出现内存耗尽,那就要重点检查报错的第8行代码了:
- 看看是不是存在无限循环,比如循环条件永远为真,持续创建变量或数组导致内存堆积;
- 有没有一次性读取超大文件/数据集?建议改成逐行读取或者分批处理;
- 有没有递归调用未设置正确的终止条件?递归很容易快速耗尽内存;
- 及时用
unset()释放不再需要的大变量,减少内存占用。
举个例子,如果第8行是读取文件,把file_get_contents()改成fopen()配合fgets()逐行处理,就能大幅降低内存消耗。
内容的提问来源于stack exchange,提问作者Lessandro
相关产品推荐
相关产品推荐

