编译PHP fileinfo模块因内存不足失败记录

最近在一台服务器上为NextCloud编译PHP的fileinfo模块出错了。仔细检查了一下,发现错误的提示是:“virtual memory exhausted: Cannot allocate memory”(虚拟内存耗尽:无法分配内存),应该是因为内存不足无法编译中断了。

刚开始还搜索了一番。因为PHP的fileinfo模块编译的时候很耗内存,机器只有512M内存是不是可能不够用,考虑是否需要调整Swap分区。不过后来找到了一个简单有效的方法:暂时关闭大部分服务,腾出内存来进行编译。

机器用的是oneinstack整合包安装的LNMP环境,Nginx/PHP/MySQL/Redis等服务都在运行占用了一定内存,可以用这些命令暂时关闭这些服务:

service nginx stop  # 关闭 Nginx/Tengine/OpenResty
service mysqld stop  # 关闭 MySQL/MariaDB/Percona
service php-fpm stop  # 关闭 PHP
service httpd stop  # 关闭 Apache
service redis-server stop  # 关闭 Redis 分布式缓存服务
service pureftpd  stop  # 关闭 Pure-Ftpd FTP服务

这些命令是给oneinstack环境用的,更多的服务控制命令可以在其官网https://oneinstack.com/install/找到,如果是lnmp一键包环境可以直接使用“lnmp stop”命令。

 

尽可能的关闭服务后,执行编译命令,这回编译成功了。完成编译后,再启动之前停止了的服务即可,或者直接用"reboot"命令重启服务器。

看来PHP的fileinfo模块编译的时候还真是很吃内存。512M内存的机器确实也能编译,就是有些吃力了。这也是为什么很多一件安装环境、VPS面板安装时都默认不开启fileinfo模块的原因。

除特别注明外,本站内容皆为 咸鱼先锋 原创,可自由引用,但请注明来源和链接。
https://xyuxf.com/archives/1503
欢迎关注 咸鱼先锋 (微信号公众号:xyuxf),获取干货推送
THE END
分享
二维码
< <上一篇
下一篇>>