Xampp 使用 Composer 命令内存不足

Posted

技术标签:

【中文标题】Xampp 使用 Composer 命令内存不足【英文标题】:Xampp getting Out of Memory with composer command 【发布时间】:2021-10-13 19:20:50 【问题描述】:

安装最新版本的xampp 8.0.9 后,当我从xampp 面板打开终端时,我有另一个操作系统Debian

uname -a -r
Linux debian 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64 GNU/Linux

现在导航到htdocs 文件夹内的php 项目后,我尝试使用composer upadte 安装和更新composer.json 包,但我收到此错误:

composer update
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Loading composer repositories with package information
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
Updating dependencies (including require-dev)

mmap() failed: [12] Cannot allocate memory

mmap() failed: [12] Cannot allocate memory
PHP Fatal error:  Out of memory (allocated 798220288) (tried to allocate 32134463 bytes) in /usr/share/php/Composer/Util/RemoteFilesystem.php on line 459

Fatal error: Out of memory (allocated 798220288) (tried to allocate 32134463 bytes) in /usr/share/php/Composer/Util/RemoteFilesystem.php on line 459

当我收到此错误时,我尝试将 memory_limit 更改为 php.ini 文件,然后运行此命令:

php --ini

输出:

Configuration File (php.ini) Path: /opt/lampp/etc
Loaded Configuration File:         /opt/lampp/etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

这里memory_limit-1,当我安装php 8.0.9 时,/etc/ 内没有php 文件夹,而我只有php 7.3

php -v

输出:

PHP 8.0.9 (cli) (built: Jul 30 2021 09:12:42) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.9, Copyright (c) Zend Technologies

php 7.3文件夹内打开php.ini更改memory_limit,这个选项值也有-1

现在如何增加memory_limit 并解决这个问题?

最后运行这个命令不要给我任何输出或结果:

php -d memory_limit=1024M /usr/bin/composer update

【问题讨论】:

【参考方案1】:

试试

php -d memory_limit=-1 composer update

这样限制的设置独立于 ini 文件。

根据php --ini,您的 php 8 的 php.ini 文件位于 /opt/lampp/etc/php.ini 中,而不是 /etc/ 下

【讨论】:

然后尝试您的作曲家文件的完整路径 我之前测试过【参考方案2】:

每当我尝试在 laravel 中使用播种机同时上传 10 万个数据时,我都会遇到同样的问题

    首先你可以尝试使用PHP chunk函数来尝试上传少量数据
foreach (array_chunk($object_array,1000) as $t)  

    DB::table('table_name')->insert($t); 

然后运行php artisan o:c

    在终端中运行命令

free -m

这是释放你的记忆

【讨论】:

以上是关于Xampp 使用 Composer 命令内存不足的主要内容,如果未能解决你的问题,请参考以下文章

laravel composer update 内存不足

Composer 要求内存不足。 PHP致命错误:允许的内存大小为1610612736字节已用尽

Composer 要求内存不足。 PHP 致命错误:允许的内存大小为 1610612736 字节已用完 Voyager

Composer 内存不足 - 需要其他方法来增加 PHP memory_limit

composer更新Laravel项目后,获取VirtualAlloc()失败:[0x00000008]内存不足错误[重复]

composer proc_open(): fork failed – Cannot allocate memory