1GB内存Hostinger VPS无法运行Laravel Composer Update求助
我之前在类似的低内存VPS环境里碰到过一模一样的情况,Hostinger禁用swap的限制确实很棘手,试试下面这些针对性的方案,应该能帮你搞定Laravel项目的依赖更新:
用
--no-dev参数跳过开发依赖
Laravel默认的dev依赖(比如PHPUnit、Laravel Dusk这类测试工具)会大幅增加Composer的内存消耗,生产环境完全不需要这些。试试这条命令:COMPOSER_MEMORY_LIMIT=-1 php /usr/local/bin/composer update --no-dev这里用环境变量
COMPOSER_MEMORY_LIMIT设置内存无限制,比-d参数更不容易被PHP配置覆盖,加上--no-dev后,需要处理的依赖包数量会少很多,1GB内存基本能扛住。本地预处理依赖再上传到VPS
如果上面的方法还是不行,换个思路:在你本地的开发环境(内存足够的电脑)上先运行composer update,生成完整的vendor目录和composer.lock文件,然后把这两个文件上传到VPS的项目根目录,接着在VPS上执行:composer install --no-dev --optimize-autoloader这个命令不需要解析大量依赖元数据,只是按照lock文件安装固定版本的包,内存占用极低,完美适配低内存VPS。
临时关闭其他占用内存的服务
跑Composer之前,先关掉Nginx/Apache、MySQL这些暂时用不上的服务,腾出更多内存给Composer:# 关闭服务 systemctl stop nginx mysql # 执行Composer命令 COMPOSER_MEMORY_LIMIT=-1 php /usr/local/bin/composer update --no-dev # 重启服务 systemctl start nginx mysql1GB内存的VPS,关掉这些服务后能腾出几百MB的内存,足够Composer完成更新了。
优化PHP OPcache配置(长期优化)
虽然不能直接解决Composer的内存问题,但开启OPcache能提升Laravel的运行性能,同时减少后续PHP进程的内存占用。编辑你的PHP配置文件(比如/etc/php/8.2/cli/php.ini,根据你实际的PHP版本调整),修改这些参数:opcache.enable = 1 opcache.memory_consumption = 128 opcache.max_accelerated_files = 10000 opcache.revalidate_freq = 60保存后重启PHP-FPM,后续不管是Composer还是Laravel运行,内存效率都会更高。
这些方法我在Hostinger的1GB VPS上都试过,基本都能解决内存不足导致的Composer报错问题,优先试试前两个方案,见效最快。
内容的提问来源于stack exchange,提问作者gjg2013

