Ubuntu PHP内存不足的解决方法
PHP内存不足的核心原因是默认内存限制过低,需通过修改配置文件提升限额。根据运行环境选择对应方式:
php --ini找到Loaded Configuration File(如/etc/php/8.1/fpm/php.ini),用文本编辑器打开,找到memory_limit行(如memory_limit = 128M),修改为更高值(如512M),保存后重启PHP服务(PHP-FPM用sudo systemctl restart php8.1-fpm,Apache用sudo systemctl restart apache2)。.htaccess文件,添加php_value memory_limit 512M,保存后无需重启,直接访问页面验证。ini_set('memory_limit', '512M'),仅对当前脚本有效,适合临时调试。/etc/php/8.1/fpm/pool.d/www.conf),添加php_admin_value[memory_limit] = 512M,保存后重启PHP-FPM。代码效率低是内存不足的常见诱因,需针对性优化:
unset()函数及时清理不再需要的变量(如循环内的临时数组)。fgets()逐行读取大文件,或LIMIT分页查询数据库)。opcache.enable=1开启OPcache,缓存编译后的脚本,减少内存重复占用(需调整opcache.memory_consumption参数匹配服务器内存)。gc_collect_cycles()强制回收未引用的内存。memory_get_usage()实时输出当前内存消耗,定位高内存消耗函数(如echo 'Memory usage: ' . memory_get_usage() . " bytes\n";)。当物理内存不足时,可通过Swap扩展虚拟内存:
sudo fallocate -l 2G /swapfile(2G大小,根据需求调整),sudo chmod 600 /swapfile设置权限,sudo mkswap /swapfile格式化。sudo swapon /swapfile立即激活,echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab添加到fstab实现开机自启。若以上方法均无法解决,且应用确实需要更多内存,建议升级服务器物理内存(RAM),这是最彻底的解决方案。