我已经在本地composer require spatie/laravel-image-optimizer
上成功安装了此软件包,但是当我尝试在实时服务器上安装时出现此错误
no@zz607:/var/www/html$ composer require spatie/laravel-image-
optimizer
Using version ^1.4 for spatie/laravel-image-optimizer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
mmap() failed: [12] Cannot allocate memory
mmap() failed: [12] Cannot allocate memory
mmap() failed: [12] Cannot allocate memory
PHP Fatal error: Out of memory (allocated 544395264) (tried to
allocate 20480 bytes) in
/usr/share/php/Composer/Repository/ComposerRepository.php on line 321
Fatal error: Out of memory (allocated 544395264) (tried to allocate
20480 bytes) in
/usr/share/php/Composer/Repository/ComposerRepository.php on line 321
答案 0 :(得分:2)
您的问题与可能只有1GB RAM且没有内存交换的事实有关,因此让我们创建它并使它在执行作曲家时可以花一些时间。
请按照以下步骤操作:
1)创建 1gb 内存交换文件:
$ sudo fallocate -l 1G /swapfile
$ sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
此命令创建了大小为1GB的
/swapfile
文件。
2)配置要交换的文件:
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
3):启用交换:
$ sudo swapon /swapfile
要查看结果,您可以运行free -m
或在htop
上查看
示例:$ sudo free -m
total usada livre compart. buff/cache disponível
Mem.: 7664 1052 3436 56 3175 6259
Swap: 1024 0 1024
示例:$ sudo swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 1G 0B -2
请测试。
答案 1 :(得分:1)
您不应在生产服务器上调用composer require
或composer update
-您应在本地运行它,验证一切正常,并用项目提交生成的composer.lock
。然后,在生产服务器上,您只需要运行composer install --no-dev
-它会安装锁定文件中定义的所有非dev依赖项。 composer install
更快,并且使用composer require
或composer update
所需的RAM的一部分,因此即使在内存较低的服务器上,它也可以正常工作。它还使您可以更好地控制生产服务器上安装的库的版本,从而可以更可靠地测试应用。