我在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.
Composer在更新或安装新模块/插件时可能会消耗大量内存。
更新作曲家到最新版本
php composer.phar --self-update
然后增加环境变量中的composer内存限制
COMPOSER_MEMORY_LIMIT=512MB php composer.phar update
512MB是新的限制。您可以根据系统要求进行编辑。在这里阅读更多
如果以上都没有解决。试试这个:检查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;"
当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库。非常感谢。