当前位置: 首页 > 知识库问答 >
问题:

作曲家总是运行到"允许的内存大小1610612736字节耗尽"-在服务器上以及本地

包建义
2023-03-14

我在Laravel 6项目中使用作曲家。然而,不知何故,我总是遇到的问题是“1610612736字节的允许html" target="_blank">内存大小耗尽”。我不知道为什么,但是几天前我就有了这个问题,我不知道它是从哪里来的。

有趣的是,我在我的开发服务器上得到了完全相同的错误。这意味着它必须与Laravel项目本身做些什么。因为正如我所说的,在我的Mac和我的开发服务器上,我用完全相同的配置和项目获得完全相同的输出。

唯一的解决方法是php-dmemory_limit=-1作曲家更新。但是我不能在我的服务器上这样做,因为我不是服务器的管理员,并且内存使用有限。所以,我确实想知道是什么导致了这个问题,以及我如何解决这个问题。

你需要更多的信息吗?我感谢任何帮助!

亲切的问候和感谢!

Mycomposer.json

{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": [
        "framework",
        "laravel"
    ],
    "license": "MIT",
    "repositories": [
        {
            "type": "composer",
            "url": "https://nova.laravel.com"
        }
    ],
    "require": {
        "php": "^7.2",
        "components/jquery": "^3.4",
        "cybercog/laravel-nova-ban": "^1.1",
        "emilianotisato/nova-tinymce": "^1.1",
        "fideloper/proxy": "^4.0",
        "glorand/laravel-model-settings": "^3.5",
        "inspheric/nova-indicator-field": "^1.43",
        "kabbouchi/nova-logs-tool": "^0.2.0",
        "laravel/framework": "^6.2",
        "laravel/nova": "~2.0",
        "laravel/socialite": "^4.4",
        "laravel/telescope": "^3.0",
        "laravel/tinker": "^1.0",
        "laravel/ui": "^1.1",
        "laravelcollective/html": "^6.1",
        "llaski/nova-scheduled-jobs": "^3.0",
        "mad-web/nova-telescope-link": "^3.0",
        "orangehill/iseed": "^2.6",
        "paquettg/php-html-parser": "^2.1",
        "pdewit/nova-external-url": "^1.0",
        "phpunit/php-code-coverage": "^9.1",
        "phpunit/phpunit": "^9.2",
        "spatie/laravel-honeypot": "^1.4",
        "spatie/laravel-medialibrary": "^7.19",
        "spatie/laravel-permission": "^3.2",
        "twbs/bootstrap": "^4.3",
        "vyuldashev/nova-permission": "^2.9",
        "yoeunes/toastr": "^1.2"
    },
    "require-dev": {
        "barryvdh/laravel-debugbar": "^3.2",
        "barryvdh/laravel-ide-helper": "^2.6",
        "brianium/paratest": "^4.1",
        "facade/ignition": "^1.4",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^3.0"
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "files": [
            "app/Helpers/helper.php",
            "app/Helpers/commentsHelper.php"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "@php artisan ide-helper:generate",
            "@php artisan ide-helper:meta"
        ]
    }
}

编写器诊断的输出

Checking composer.json: OK
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys:
Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
OK
Checking composer version: OK
Composer version: 1.10.10
PHP version: 7.3.18
PHP binary path: /usr/local/Cellar/php@7.3/7.3.18_1/bin/php
OpenSSL version: OpenSSL 1.1.1g  21 Apr 2020

当我运行这个命令时:

(基本上是我安装、删除或更新软件包的任何命令)

composer update
composer install
...
...

我得到以下输出:

PHP Fatal error:  Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/Cellar/composer/1.10.7/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/Cellar/composer/1.10.7/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223

Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.

共有3个答案

齐昊焱
2023-03-14

Composer在更新或安装新模块/插件时可能会消耗大量内存。

更新作曲家到最新版本

php composer.phar --self-update

然后增加环境变量中的composer内存限制

COMPOSER_MEMORY_LIMIT=512MB php composer.phar update

512MB是新的限制。您可以根据系统要求进行编辑。在这里阅读更多

浦泳
2023-03-14

如果以上都没有解决。试试这个:检查PHP内存(在命令行中):

php -r "echo ini_get('memory_limit').PHP_EOL;"

为cli检查加载的php.ini:

php -r "phpinfo();"

它应该显示类似于/etc/php/7.4/cli/php.ini的内容

现在更改上面的ini文件,memory_limit高于1.5G(因为作曲家将自动缩放内存到1.5 G)

memory_limit=2024M

重启nginx:

sudo service nginx restart

再次检查php内存是否增加:

php -r "echo ini_get('memory_limit').PHP_EOL;"
段干宏硕
2023-03-14

当composer检测到PHP内存限制过低时,它会自动将内存限制增加到1.5 GB。对于某些依赖项集,这可能仍然没有足够的内存。

通过在composer命令中内联指定composer\u memory\u limit环境变量,可以增加单个composer命令的内存限制。您可以将其增加到特定值,也可以将其设置为-1,以删除内存限制,这样它将尽可能多地使用可用的内存。注意:这不会改变服务器上的任何内容。这只影响此命令的composer的内存限制。

COMPOSER_MEMORY_LIMIT=-1 composer install

如果在执行此命令后,由于系统没有足够的可用内存,或者需要人为限制内存使用量(您提到的“有限的RAM使用量”),您仍然会遇到内存问题,则可以尝试设置并使用交换文件来增加可用内存量。

创建并启用临时交换文件:

# Create a 2GiB (1024x2M) empty file at ~/.swapfile
# This may take a minute.
dd if=/dev/zero of=~/.swapfile bs=1024 count=2M

# Setup a swap area in the new empty file.
mkswap ~/.swapfile

# Enable the swap area in the file (temporary - does not survive reboot).
swapon ~/.swapfile

现在,使用交换文件设置,运行composer命令。这可能需要比您习惯的时间多一点,因为交换文件比RAM慢。

完成作曲家命令后,如果愿意,可以禁用和删除交换文件。

# Disable the swap file
swapoff ~/.swapfile

# Remove the swap file.
rm ~/.swapfile
 类似资料:
  • 我正在尝试运行artisan make:controller。 我有一个问题: 我试图增加

  • 我想通过运行下面的命令来运行commandcomposer更新到我的Laravel项目。 当我尝试运行composer require时,我遇到了内存不足错误。

  • 我有以下代码: 不同的文件: 由于我编写了Mail()函数,因此出现以下错误: 致命错误:允许的内存大小134217728字节已用尽(尝试分配65488字节)

  • 在同一个系统中,我可以调用数据库,没有问题,但在某些情况下(与最大的表),我得到 “PHP致命错误:第311行的/home/forge/sximo.sp-marketing.com/vendor/laravel/framework/src/light/Database/Connection.PHP中允许的内存大小为536870912字节(尝试分配32字节) 我调试了代码,问题是一个基本查询: 当我

  • 我有一个网页,可以将图像上传到我的API Laravel项目。它一直工作到我上传大小巨大或等于2mb的图像,并在nginx 500错误中运行: 我在stack overflow和google上读到了大量相同的问题,但似乎没有任何效果。 仔细阅读错误消息,我可以理解,从我的PHP配置,该网站可以采取134217728字节的内存,但它无法尝试分配73728字节:它有任何意义吗?它只在允许的最大128m

  • 以下是完整的错误: 致命错误:允许内存大小为134217728字节耗尽(尝试分配131072字节) /sites/apps/seller/www/application/libraries/Excel/PHPExcel/CachedObjectStorage/CacheBase.php行173 这是mu代码: 我使用codeigniter框架和phpexcel库。非常感谢。