Moh*_*afa 11 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
Run Code Online (Sandbox Code Playgroud)
rob*_*006 28
您不应该调用composer require或composer update在生产服务器上 - 您应该在本地运行它,验证一切正常,并提交composer.lock与您的项目一起生成。然后在生产服务器上您只需要运行composer install --no-dev- 它会安装锁定文件中定义的所有非开发依赖项。composer install速度要快得多,并且使用composer requireor所需的RAM的一小部分composer update,因此即使在内存不足的服务器上它也应该可以正常工作。它还使您可以更好地控制生产服务器上安装的库版本,因此您可以更可靠地测试应用程序。
Bul*_*elo 18
您的问题与可能的事实有关,即只有 1gb 的 RAM 而没有内存交换,因此让我们创建并使其在 composer 执行时需要一些时间。
请按照以下步骤操作:
1)创建1GB内存交换文件:
$ sudo fallocate -l 1G /swapfile
$ sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
Run Code Online (Sandbox Code Playgroud)
此命令创建了
/swapfile大小为 1GB的文件。
2)配置文件交换:
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
Run Code Online (Sandbox Code Playgroud)
3)启用交换:
$ sudo swapon /swapfile
Run Code Online (Sandbox Code Playgroud)
要查看结果,您可以运行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
Run Code Online (Sandbox Code Playgroud)
例子: $ sudo swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 1G 0B -2
Run Code Online (Sandbox Code Playgroud)
请测试。