在1GB内存服务器上部署宝塔面板安装PHP7.4时,需先创建2GB根目录swap缓冲(dd if=/dev/zero of=/swapfile bs=1M count=2048 && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile),再精准定位php-config、php.ini及extension_dir路径,手动编译fileinfo扩展(phpize → configure → make → make install),最后编辑php.ini添加extension=fileinfo.so并执行service php-fpm-74 restart验证生效。

在1GB内存的云服务器上部署宝塔面板并安装PHP7.4时,常因编译fileinfo等扩展触发“内存不足”错误而中断,导致LNMP环境无法完整启用——这不是配置遗漏,而是低配服务器资源与默认编译流程不匹配的必然结果。
先创建swap虚拟内存缓冲区
物理内存不足时,Linux swap机制能提供关键缓冲。不设swap,后续所有编译操作都会直接被OOM killer终止。
执行命令创建2GB临时swap文件:dd if=/dev/zero of=/swapfile bs=1M count=2048 && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
【swapfile路径必须是根目录下的绝对路径,不能放在/www或/tmp下,否则swapon会失败】
立即学习“PHP免费学习笔记(深入)”;
验证是否生效:运行free -h,确认Swap行total显示2.0G且used非零。
精准定位PHP7.4核心路径
手动编译依赖三个关键路径,错一个就找不到phpize或无法加载扩展。
第一步:查php-config位置——执行whereis php-config | awk '{print $2}',典型输出为/www/server/php/74/bin/php-config
第二步:查php.ini实际加载路径——新建/www/wwwroot/info.php,内容为<?php phpinfo(); ?>,浏览器访问后找“Loaded Configuration File”行
第三步:查扩展存放目录——执行php -i | grep "extension_dir",输出类似/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902
手动编译fileinfo扩展(跳过宝塔自动安装)
宝塔一键安装会启动全量PHP编译,内存峰值超1.2GB;手动编译仅编译单一模块,峰值压到600MB以内。
方法一:使用已下载的PHP源码(推荐)
进入PHP源码的ext/fileinfo目录:cd /www/server/php/src/ext/fileinfo(若不存在则需先下载对应版本源码)
执行/www/server/php/74/bin/phpize生成configure脚本
运行./configure --with-php-config=/www/server/php/74/bin/php-config
执行make && make install,成功后会提示“Installing shared extensions: …/no-debug-non-zts-20190902/”
方法二:无源码时快速补救
从官方镜像下载PHP7.4源码包:wget https://windows.php.net/downloads/releases/php-7.4.33-src.zip → 解压 → 进入ext/fileinfo目录 → 后续步骤同方法一
【make过程严禁后台运行或断开SSH,否则编译中断且残留锁文件,需手动删除/tmp/.phpize-lock】
启用扩展并强制重启PHP服务
编辑php.ini文件,在末尾添加一行:extension=fileinfo.so
保存后,必须执行完整重启:service php-fpm-74 restart(仅点宝塔面板“重载配置”无效)
验证是否生效:运行php -m | grep fileinfo,有输出即成功;再执行php -i | grep "fileinfo support"确认状态为enabled



















