编译php扩展报错 virtual memory exhausted: Cannot allocate memory [libmagic/apprentice.lo] Error 1解决办法

编译php扩展的时候报错:

libmagic/.libs/apprentice.o

virtual memory exhausted: Cannot allocate memory

make: *** [libmagic/apprentice.lo] Error 1

今天我遇到了这个问题 因为内存不足1G编译fileinfo扩展的时候遇到的,提示虚拟内存耗尽。

解决这个问题很简单,如果你不需要这个扩展直接关掉 --disable-fileinfo 用这个参数就可以不编译fileinfo.

但是如果非要这个扩展按以下方法解决;

free -h #可以查看一下内存情况

#创建一个1G的swap文件,几秒钟就完事儿,当然你可以建一个更大的,自定义的路径(/tmp/swap)
#比如/home/swapfile
dd if=/dev/zero of=/tmp/swap bs=1024 count=1024000 

du -h /tmp/swap #用这个命令可以看一下创建的swap文件的大小

mkswap /tmp/swap #将刚才创建的swap文件转换为swap格式

swapon /tmp/swap #再将swap文件挂载在swap分区

free -h #再次用这个命令就可以看到虚拟内存是否已经扩展成功

vi /etc/fstab 
#如果需要永远保留这个分区,需要修改/etc/fstab文件,在文件末尾加上下面一行/tmp/swap swap swap default 0 0

一切问题都解决了 ,再编译的时候则不会再报错了.


Tags linux php

留言(0)

评论