【问题标题】:How to solve this error on live server for laravel?如何在 laravel 的实时服务器上解决此错误?
【发布时间】:2020-06-11 04:08:54
【问题描述】:

我已经在本地成功安装了这个包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

服务器信息

【问题讨论】:

  • 这是我的服务器信息 CPU:1 vCore RAM:1024 MB 存储:25 GB SSD
  • 操作系统和PHP版本是多少?
  • PHP 7.2 GNU/Linux
  • 您启用了交换文件?你用的是 apache 还是 nginx?
  • 如何检查?

标签: laravel composer-php


【解决方案1】:

您不应该在生产服务器上调用composer requirecomposer update - 您应该在本地运行它,验证一切正常,然后将生成的composer.lock 提交到您的项目中。然后在生产服务器上,您只需要运行composer install --no-dev - 它会安装锁定文件中定义的所有非开发依赖项。 composer install 速度更快,并且使用了composer requirecomposer update 所需的RAM 的一部分,因此即使在内存不足的服务器上也应该可以正常工作。它还使您可以更好地控制生产服务器上安装的库版本,因此您可以更可靠地测试应用程序。

【讨论】:

  • 这是最好的答案,应该是公认的答案。谢谢@rob006!
  • 这个答案的问题是composer不适用于composer install,它会抛出一个错误:Invalid argument shopware-pwa/shopware-pwa。改用“composer require shopware-pwa/shopware-pwa”将包添加到您的 composer.json。
  • 奇怪的是,composer install --no-dev -vvv 在本地为我工作,但我的远程服务器上的相同命令会产生错误“您的锁定文件不包含一组兼容的软件包。请运行 composer update。”
  • @Ryan 你的产品服务器可能会错过一些 PHP 扩展。
  • 将 PHP 锁定到 7.4 版帮助:stackoverflow.com/a/65878435/470749
【解决方案2】:

您的问题可能与只有 1gb 的 RAM 并且没有内存交换的事实有关,因此让我们创建并使其在执行 composer 时需要一些时间。

按照以下步骤操作:

1) 创建 1gb 内存 swapfile

$ 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

请测试一下。

【讨论】:

  • no@zz607:/var/www/html$ sudo dd if=/dev/zero of=/swapfile 1000000 bs=1024 dd: unrecognized operand ‘1000000’ Try 'dd --help' for more information.
  • 我在运行 dd if=/dev/zero of=/swapfile 1000000 bs=1024 时遇到此错误
  • @محمدمصطفي 对不起,再次测试
  • 我已经运行了所有命令,但是我无法部署任何东西我得到这个错误,no@zz607:/var/www/html$ sudo git pull origin master Username for 'https://github.com': username99 Password for 'https://username99@github.com': remote: Enumerating objects: 7, done. remote: Counting objects: 100% (7/7), done. remote: Compressing objects: 100% (1/1), done. remote: Total 4 (delta 3), reused 4 (delta 3), pack-reused 0 Unpacking objects: 100% (4/4), done. From https://github.com/aekraes/zuxweb * branch master -> FETCH_HEAD 69b12f4..b6ffb44 master -> origin/master
  • Updating 6cdf9f2..b6ffb44 error: Your local changes to the following files would be overwritten by merge: composer.json Please commit your changes or stash them before you merge. Aborting
猜你喜欢
  • 2020-01-21
  • 1970-01-01
  • 2023-01-07
  • 2020-07-22
  • 2020-01-30
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多