如何解决Laravel实时服务器上的此错误?

时间:2019-03-08 19:05:50

标签: laravel composer-php

我已经在本地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

服务器信息 enter image description here

2 个答案:

答案 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 requirecomposer update-您应在本地运行它,验证一切正常,并用项目提交生成的composer.lock。然后,在生产服务器上,您只需要运行composer install --no-dev-它会安装锁定文件中定义的所有非dev依赖项。 composer install更快,并且使用composer requirecomposer update所需的RAM的一部分,因此即使在内存较低的服务器上,它也可以正常工作。它还使您可以更好地控制生产服务器上安装的库的版本,从而可以更可靠地测试应用。