And*_*rew 25 php ssh laravel composer-php
我需要在我的主机上运行composer update,所以我使用ssh登录并尝试运行comand:
composer update
Run Code Online (Sandbox Code Playgroud)
在/ www文件夹里我有laravel和composer instalation
与我的托管服务提供商联系,他们告诉我运行命令:
php -d memory_limit=512M composer update
Run Code Online (Sandbox Code Playgroud)
我运行此命令,但得到:"无法打开文件:composer"
该怎么办?什么是解决方案?
Sve*_*ven 46
运行时composer update
,操作系统将查看配置的路径并尝试查找具有该名称的可执行文件.
运行时php composer update
,该composer
字符串被视为PHP的参数,不在任何路径中搜索.您必须提供完整路径才能运行它.
运行which composer
将告诉您操作系统找到作曲家可执行文件的位置,然后您只需使用PHP命令中的完整路径:
$>which composer
/usr/local/bin/composer
$>php -d memory_limit=512M /usr/local/bin/composer update
...
Run Code Online (Sandbox Code Playgroud)
请注意,512MB可能太少.我的看法是它会高兴地占用1GB或更多,这取决于您使用的依赖项数量和理论上允许的各种版本,即如果您允许使用Symfony ~2.3
,那么与使用Sympfony相比,您可以使Composer处理更多可能的版本~2.7
.
另请注意,在生产计算机上运行Composer并不是最好的选择.您必须有权访问Github,可能提供访问凭据,安装了VCS工具,如果任何远程主机服务器在您更新期间处于脱机状态,您将很容易破坏您的站点.最好在部署系统上使用Composer来完成所有准备工作,然后将所有文件移动到生产服务器上.
Rom*_*nev 30
对我来说最好的解决方案是
COMPOSER_MEMORY_LIMIT=-1 composer require <package-name>
Run Code Online (Sandbox Code Playgroud)
@realtebo 提到
dia*_*sea 18
将其设置为使用所需的内存:
COMPOSER_MEMORY_LIMIT=-1 composer update
Run Code Online (Sandbox Code Playgroud)
Die*_*ero 17
我遇到了 Composer 的问题,因为它消耗了所有可用内存,然后进程被终止(实际上,输出消息是“Killed”)
所以,我一直在寻找一种限制作曲家内存使用的解决方案。
我试过(来自@Sven 的回答)
$ php -d memory_limit=512M /usr/local/bin/composer update
Run Code Online (Sandbox Code Playgroud)
但它没有用,因为
“Composer 内部将 memory_limit 增加到 1.5G。”
-> 来自 composer 官方网站。
然后我找到了一个有效的命令:
$ COMPOSER_MEMORY_LIMIT=512M php composer.phar update
Run Code Online (Sandbox Code Playgroud)
虽然,在我的情况下 512mb 是不够的!
来源:https : //www.agileana.com/blog/composer-memory-limit-troubleshooting/
Ger*_*ied 15
我不得不在命令行中结合COMPOSER_MEMORY_LIMIT
和memory_limit
:
在 Windows 上:
set COMPOSER_MEMORY_LIMIT=99999999999&& php -d memory_limit=-1 composer.phar update
Run Code Online (Sandbox Code Playgroud)
在 Linux 上:
export COMPOSER_MEMORY_LIMIT=99999999999 && php -d memory_limit=-1 composer.phar update
Run Code Online (Sandbox Code Playgroud)
Cos*_*run 11
如果有足够的内存,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
Run Code Online (Sandbox Code Playgroud)
使其永久添加到 /etc/fstab 文件中, /swapfile swap swap defaults 0 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
Run Code Online (Sandbox Code Playgroud)
您可以通过更改 bs= 1024k 或 2048k 或 8096k 来增加交换内存,具体取决于您的物理卷大小。使用 'swapon' 和 swapoff 命令来查看差异。
检查“swappiness”(60 应该很好,)
cat /proc/sys/vm/swappiness
Run Code Online (Sandbox Code Playgroud)
您可以更改memory_limit
php.ini 中的值
尝试增加 php.ini 文件中的限制
使用 -1 表示无限制或定义显式值,如 2G
memory_limit = -1
Run Code Online (Sandbox Code Playgroud)
注意:Composer 内部将 memory_limit 增加到 1.5G。
阅读文档getcomposer.org
我在 Windows 10 上做了这个并和我一起工作:
php -d memory_limit=-1 C:/ProgramData/ComposerSetup/bin/composer.phar update
Run Code Online (Sandbox Code Playgroud)
你可以改变你想要的xx值
memory_limit=XX
Run Code Online (Sandbox Code Playgroud)