Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 4096 bytes)...

2019-03-11 14:02:27   错误异常

今天在用composer的时候又遇到了Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 4096 bytes)...的错误,我想这个错误很多人都遇到过,而且大多数情况是在用composer update 的时候遇到的,当然有时候也出现在大家自己写的程序中,今天,我就来总结一下可能出现这个问题的情景,以及每种情况的解决办法。


这是什么异常?怎么导致的?

首先呢,先来说一下这个异常,这个异常呢就是不能分配所需要的内存大小,要么是你php.ini配置文件中memory_limit设置太小,要么就是你系统内存不够用了。


解决方案

针对上面的分析,我想你已经有解决方案了,那就是给它足够的内存。

在开始之前,先说明一个事情,有的同学是在服务器上,而且服务器配置并不高,内存1G甚至都不到,知道要给他足够内存,可是硬件条件不允许啊。这种情况我们就要建置swap了,其实就是一种扩充内存的方式,使用硬盘空间来扩充内存,当内存不足的时候,就会用到swap了。方法详情请见:Linux swap建置

1. composer临时增大内存限制执行update

首先你需要找到composer的真实路径,这一步很关键。然后再用这个路径去执行相关命令:

# 查找composer真实路径
which composer

# 打印的结果
/usr/bin/composer

# 执行composer update命令
php -d memory_limit=2G /usr/bin/composer update

注意两点问题,第一,memory_limit=2G可以根据情况设置,比如我报的错误需要1073741824 bytes算一下大概是1G,索性我就给他2G,当然,有的老铁不愿意费劲,那就直接 memory_limit=-1 表示不限制内存大小;第二,就是后面的/usr/bin/composer 别忘记根据你自己的打印结果替换。

2. 自己写的代码中出现的问题,并且不希望改变全局设置,仅仅在执行这段代码的时候不限制内存

我们只需要在问题代码之前加上一条语句即可:

ini_set(‘memory_limit’,‘-1’);

其中-1是指不限制内存大小,当然你也可以指定大小,例如512M, '1G'。

3. 希望通过修改配置文件更改全局配置

首先找到配置文件位置:

php -i | grep php.ini
# 打印结果
Configuration File (php.ini) Path => /etc/php/7.1/cli
Loaded Configuration File => /etc/php/7.1/cli/php.ini

这样我们找到了配置为文件位置为: /etc/php/7.1/cli/php.ini,编辑它

vim  /etc/php/7.1/cli/php.ini

我们按/键进入查找模式,输入memory_limit,回车查找,如果直接没有定位到配置项 按 n 继续查找下一个,N 返回上一个查找位置,一般可以直接找到,定位到 memory_limit之后 将后面的值调大,比如:

# 原来
memory_limit=64M

#修改后
memory_limit=128M

然后重启php-fpm,先杀后启动:

# 杀掉
pkill php-fpm

# 启动
php-fpm

注:这里命令可能有所不同,可能你的php-fpm后面会跟版本号,例如你需要用php-fpm7.2启动,这里你就随机应变吧,实在不会弄,重启大法好,反正Linux重启也快。

viencoding.com版权所有,允许转载,但转载请注明出处和原文链接: https://viencoding.com/article/119
欢迎小伙伴们在下方评论区留言 ~ O(∩_∩)O
文章对我有帮助, 点此请博主吃包辣条 ~ O(∩_∩)O

猜你喜欢


评论

There are no comments yet.
未登录

登录后即可发表评论

登录或注册

标签

AdSense Anaconda Android apache API apt Auth AWS B-tree Bandwagon Blog bower brew bytes Caffe Catalina cloudcone Composer conda CoreML CPU crontab CSS csv Cuda cv2 datetime Digitalocean DNS Docker Docker-Compose Eloquent Excel export Flask FTP GET Git GitHub GitLab Gmail GoDaddy Google GTM hash Homebrew Homestead HTML http HTTPS IDEA image imagemagick imagick imgick import InnoDB ios iou iPhone ISO8601 iTerm2 Java JavaScript JPG Keras Laravel Laravel-Admin lazyload Linux list lnmp load logs Lravel Mac Markdown matplotlib md5 mix MobileNet Mojave mongo MongoDB MySQL Namesilo Nginx Node npm numpy Nvidia Nvidia-Docker onevps OpenCV Openpose openpyxl Outline parse PayPal PHP php-fpm PhpStorm PHP扩展 PIL Pillow pip PNG POST Protobuf PyCharm pyenv pymongo Python Python,人工智能,机器学习,VOC,xml Queue Redis requests RGB Sanctum save selenium SEO Shadowsock Shadowsocks ShadowsocksR simplemde Spring Boot SQLServer ssd SSH SSL证书 SSR str Sublime sudo swap Swift Tensorflow TensorflowLite Terminal Terminator Ubuntu urllib UTC v2ray Valet Validation Validator VienBlog virtualenvs VPN VPS Vultr Web Windows WordPress Xcode xlsx yaml YAPI YUV zip zmq zsh 下载图片 主从同步 云主机 云服务器 人工智能 优化 优惠码 伪原创 作弊与反作弊 免费ss账号 免费提现 切片 前端 加密 协议 博客 友链 双击事件 后台运行 后端 命令 国内镜像源 图标 图片操作 图片转换 域名 多身份认证 大小写转换 姿态检测 安卓模拟器 安装 定时任务 定时执行 密码 密钥 导出导入 小程序码 延迟加载 微信 微信小程序 快捷方式 慢查询 懒加载 提现 搜索引擎 搬瓦工 搭梯子 教程 数据库 数据重复 文件上传 无法登录 日志 日期 时区 时间 时间戳 服务器 机器学习 权限 梯子 模拟浏览器 港版支付宝 漏洞 爬虫 生活服务 用户管理 病毒 登录 目标检测 科学上网 系统升级 索引 组件开发 编辑器 自动付款 自定义组件 英文伪原创 计划任务 计算机视觉 认证 语法 读写分离 远程连接 配置文件 重定向 错误异常 错误提示 队列 阿里云 香港 香港手机号
亲情非友情链接