Php 编写器更新内存限制

Php 编写器更新内存限制,php,laravel,ssh,composer-php,Php,Laravel,Ssh,Composer Php,我需要在我的主机上运行composer update,因此我使用ssh登录,并尝试在/www文件夹中运行以下命令,我在该文件夹中安装了Laravel和composer: composer update 我得到这个错误: 我正在与我的主机提供商联系,他们告诉我运行命令: php -d memory_limit=512M composer update 我运行了这个命令,但得到:“无法打开文件:composer” 怎么办?这里的解决方案是什么?当您运行composer update时,操作系统

我需要在我的主机上运行composer update,因此我使用ssh登录,并尝试在/www文件夹中运行以下命令,我在该文件夹中安装了Laravel和composer:

composer update
我得到这个错误:

我正在与我的主机提供商联系,他们告诉我运行命令:

php -d memory_limit=512M composer update
我运行了这个命令,但得到:“无法打开文件:composer”


怎么办?这里的解决方案是什么?

当您运行
composer update
时,操作系统将查看配置的路径,并尝试找到具有该名称的可执行文件

运行
php composer update
时,
composer
字符串被视为php的参数,不会在任何路径中搜索该参数。您必须提供完整路径才能运行它

运行
哪个composer
将告诉您操作系统在哪里找到composer可执行文件,然后您只需在PHP命令中使用完整路径:

$>which composer
/usr/local/bin/composer

$>php -d memory_limit=512M /usr/local/bin/composer update
...
请注意,512MB可能太少。我的看法是,它很可能需要1GB或更多,这取决于您使用的依赖项的数量和理论上允许的版本的多样性,也就是说,如果您允许Symfony
~2.3
,那么与使用
~2.7
相比,您可以让Composer处理更多可能的版本

还要注意,在生产机器上运行Composer并不是最好的主意。您必须能够访问Github,可能需要提供访问凭据,安装VCS工具,并且如果在更新过程中任何远程托管服务器处于脱机状态,您将很容易破坏您的站点。最好在完成所有准备工作的部署系统上使用Composer,然后将所有文件移动到生产服务器上

更新

现在是2020年,作曲家管理记忆的方式发生了很大的变化。最重要的是,如果遇到设置得太低的限制,Composer将自行增加内存限制。但是,这会立即引发在安装了太少内存的计算机上内存不足的问题。通过设置环境变量,如
Composer\u memory\u LIMIT=512M
,可以使Composer使用更少的内存,但如果Composer需要更多内存才能正确操作,则会产生问题


我的主要观点仍然是正确的:不要在内存太少的机器上运行Composer。您可能需要1.5 GB的可用内存才能更新所有内容。

您可以更改php.ini中的
内存限制值

尝试增加php.ini文件中的限制

使用-1表示无限或定义一个明确的值,如2G

memory_limit = -1
注意:Composer内部将内存限制增加到1.5G


阅读文档

我在使用composer时遇到问题,因为它会消耗所有可用内存,然后进程被终止(实际上,输出消息是“终止”)

因此,我正在寻找一种解决方案来限制composer内存的使用

我试过了(来自@Sven answers)

但它不起作用,因为

“Composer在内部将内存限制增加到1.5G。”

->这是来自作曲家官方网站

然后我发现了一个有效的命令:

$ COMPOSER_MEMORY_LIMIT=512M php composer.phar update
尽管如此,在我的情况下,512mb是不够的


来源:

将其设置为使用所需的内存:

COMPOSER_MEMORY_LIMIT=-1 composer update

如果有足够的内存,composer将在内部使用它,并且运行时不会出现任何问题。不需要特别告诉作曲家去做

你试过增加你的交换记忆吗,因为它对我有用。我将交换内存增加到4096Mb(4GB),现在我觉得这一切都很棒

首先使用“
sudo free
”查看可用内存和交换内存。并将交换配置为

对于Debian:

sudo fallocate -l 4G /swapfile
sudo dd if=/dev/zero of=/swapfile bs=4096k count=1048
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
要使其永久性地添加到/etc/fstab文件中,
/swapfile-swap-defaults 0

对于CentOS:

[root@myserver]:/# cd /var
[root@myserver]:/var# touch swap.img
[root@myserver]:/var# chmod 600 swap.img
[root@myserver]:/var# mkswap /var/swap.img

[root@myserver]:/var# dd if=/dev/zero of=/var/swap.img bs=4096k count=1000
[root@myserver]:/var# mkswap /var/swap.img 
[root@myserver]:/var# swapon /var/swap.img
您可以通过更改bs=1024k或2048k或8096k来增加交换内存 取决于您的物理卷大小。 使用“swapon”和swapoff命令查看差异

检查“互换性”(60应该很好,)


您的aws服务器有多大?如果它只有1gb的ram,那么在php.ini中设置2gb的内存限制是没有帮助的

如果您不能/不想同时增加服务器端以获得更多可用RAM,也可以启用交换

请参见此处,它支持4gb,尽管我自己通常只支持1GB


来源:从laracast站点获取

此错误可能会发生,尤其是在更新大型库或具有大量依赖项的库时。这位作曲家可能非常渴望记忆

请确保您的composer本身已更新至最新版本:

php composer.phar --self-update
通过添加composer memory limit环境变量,可以临时增加composer的内存限制:

COMPOSER_MEMORY_LIMIT=128MB php composer.phar update
兆字节使用“128M”格式,千兆字节使用“2G”格式。您可以使用值“-1”完全忽略内存限制

另一种方法是增加PHP内存限制:

php -d memory_limit=512M composer.phar update ...

我必须在命令行中组合
COMPOSER\u MEMORY\u LIMIT
MEMORY\u LIMIT

在Windows上:

set COMPOSER_MEMORY_LIMIT=99999999999&& php -d memory_limit=-1 composer.phar update
在Linux上:

export COMPOSER_MEMORY_LIMIT=99999999999 && php -d memory_limit=-1 composer.phar update

就我而言,没有一个答案有用。最后,改为64位版本的PHP(M$Windows)立即解决了这个问题。我没有更改任何设置-它只是工作。

在MAC OS High Siera上,我运行了以下命令:

MacBook-Pro:asiu jack$ php --ini
返回:

Configuration File (php.ini) Path: /usr/local/etc/php/7.4
Loaded Configuration File:         /usr/local/etc/php/7.4/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d
Additional .ini files parsed:      /usr/local/etc/php/7.4/conf.d/ext- 
opcache.ini,
/usr/local/etc/php/7.4/conf.d/php-memory-limits.ini

上面的所有答案都是设置加载的配置,该配置会更新,但请注意,解析的其他.ini文件将php-memory-limits.ini作为单独的文件。您还必须更新此文件的memeory限制。以同样的方式在文本编辑器中打开并更改为类似2G的内容。内存限制失败时的输出应该告诉您它需要运行多少内存,只需将其设置为高于该值或-1表示无限制。

在我的情况下,随着内存限制的增加,它需要更高的权限

sudo COMPOSER_MEMORY_LIMIT=2G php /opt/bitnami/php/bin/composer.phar update

我在Windows10上做了这个,然后开始工作
Configuration File (php.ini) Path: /usr/local/etc/php/7.4
Loaded Configuration File:         /usr/local/etc/php/7.4/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d
Additional .ini files parsed:      /usr/local/etc/php/7.4/conf.d/ext- 
opcache.ini,
/usr/local/etc/php/7.4/conf.d/php-memory-limits.ini
sudo COMPOSER_MEMORY_LIMIT=2G php /opt/bitnami/php/bin/composer.phar update
php -d memory_limit=-1 C:/ProgramData/ComposerSetup/bin/composer.phar update
 memory_limit=XX
vagrant up
vagrant ssh
php --version # 7.4
php --ini # Shows path to the php.ini file that's loaded
cd /etc/php/7.4/cli # your PHP version. Each PHP version has a folder
sudo vi php.ini
; Maximum amount of memory a script may consume
; http://php.net/memory-limit
memory_limit = -1
sudo vi /usr/local/etc/php/7.4/conf.d/php-memory-limits.ini
valet restart
<C:\>set COMPOSER_MEMORY_LIMIT=-1
<C:\>composer install exhausted/packages
COMPOSER_MEMORY_LIMIT=-1 composer require <package-name>
php -d memory_limit=-1 C:\\composer\\composer.phar install