Php 作曲家是;“杀死”;自动从SSH

Php 作曲家是;“杀死”;自动从SSH,php,symfony,composer-php,Php,Symfony,Composer Php,我在本地构建了一个完整的应用程序,现在像往常一样尝试在远程服务器上安装(git pull、解决冲突、更新实体、清除缓存…),但我的新应用程序需要几个捆绑包,因此在从github进行拉取并解决冲突之后,我正在尝试安装这些捆绑包,所有这些捆绑包都出现了同样的问题 我的服务器是否正在“杀死”进程 我找了一整天,但找不到问题。我在php.ini中的php配置是: 这个错误以前从未发生过,两年前我在这个服务器上安装了很多包。有类似经历的人 多谢各位 编辑: 我做了一个“php composer.pha

我在本地构建了一个完整的应用程序,现在像往常一样尝试在远程服务器上安装(git pull、解决冲突、更新实体、清除缓存…),但我的新应用程序需要几个捆绑包,因此在从github进行拉取并解决冲突之后,我正在尝试安装这些捆绑包,所有这些捆绑包都出现了同样的问题

我的服务器是否正在“杀死”进程

我找了一整天,但找不到问题。我在php.ini中的php配置是:

这个错误以前从未发生过,两年前我在这个服务器上安装了很多包。有类似经历的人

多谢各位

编辑:

我做了一个“php composer.phar诊断”,得到以下结果:


问题可能在“composer.json”中?

可能是与PHP CLI内存限制配置相关的问题。 您可以使用以下命令诊断CLI PHP的内存分配:

php -i | grep memory
php -i | grep 'php.ini'
并使用以下命令查看哪个
php.ini
适用于CLI版本:

php -i | grep memory
php -i | grep 'php.ini'
顺便说一句,我建议使用composer依赖项开发的正确工作流程如下:

但正如您所知,您通常应该在计算机上运行
update
然后提交/部署composer.lock文件并仅运行
在服务器上安装
以将依赖项与锁同步 文件,以确保您只获得正确测试的内容。那样 您还可以在内存不足的情况下运行服务器,而不会出现任何问题

希望对您有所帮助

谢谢

问题是否可能是服务器上剩余的可用RAM

我已经验证了内存量限制,但不认为这是问题所在

php-cli -i | grep memory

然而,我已经解决了我的问题。事实上,有三种方法可以解决这个问题:

1。安装不带Composer的捆绑包

这不是一个推荐的解决方案,但通常非常有用,尤其是在非常过时的项目中,并且您担心命令
composer update

本指南假设您的本地服务器上没有内存限制问题,因此所有命令都可以与composer配合使用

首先,您必须在本地计算机上安装捆绑包,例如:

composer require jms/serializer-bundle
安装包后,只需将包添加到AppKernel.php文件中:

// in AppKernel::registerBundles()
  $bundles = array(
  // ...
  new JMS\SerializerBundle\JMSSerializerBundle(),
  // ...
);
第二个,从捆绑包目录打开composer.json,例如

// \vendor\jms\serializer-bundle\JMS\SerializerBundle\composer.json
"require": {
    "php": ">=5.4.0",
    "jms/serializer": "^1.0.0",
    "phpoption/phpoption": "^1.1.0",
    "symfony/framework-bundle": "~2.3|~3.0"
},
对于“require部分”中的每个bundle,打开相应的composer.json以标识所有必需的bundle

目的是复制所有这些捆绑包的目录,并将它们上载到“供应商”目录中的远程服务器(注意维护相同的大型目录层次结构)

e、 g:

如果从jms/序列化程序包中打开composer.json,您可以看到:

// vendor/jms/serializer/composer.json
"require": {
    "php": ">=5.4.0",
    "jms/metadata": "~1.1",
    "jms/parser-lib": "1.*",
    "phpcollection/phpcollection": "~0.1",
    "doctrine/annotations": "1.*",
    "doctrine/instantiator": "~1.0.3"
},
现在,您应该从jms/metadata、jms/parser lib和phpcollection/phpcollection打开composer.json,以确定必须上载到远程服务器的其他捆绑包

目标是不缺少任何依赖项

最后,从远程服务器打开
/vendor/composer/autoload_namespace.php
,并添加捆绑依赖项的所有名称空间。您应该将此文件与本地“autoload_namespaces.php”进行比较

2。添加交换空间

您有三个选项:创建新交换分区、创建新交换文件或在现有LVM2逻辑卷上扩展交换。建议您扩展现有逻辑卷

3。在本地更新composer以仅在远程安装

这是进行良好编程实践的推荐选项。当对第三个项目执行
composer update
时,我们不知道会发生什么错误,但是当您有足够的时间进行开发,并且从现在起该项目将属于您时,您应该让该项目完全升级。首先使用
composer update
在本地服务器上进行更新,并解决出现的所有冲突。最后,在服务器上更新了composer.json和composer.lock之后,从现在到永远只需运行
composer安装
,即可安装和更新新捆绑包的所有依赖项

Matteo的解释是正确的,
composer update
命令比
composer install
占用的内存多得多

但正如您所知,您通常应该在计算机上运行update,然后提交/部署composer.lock文件,并仅在服务器上运行install,以将依赖项与锁文件同步,以确保只获得正确测试的内容。这样,您也可以在内存不足的情况下运行服务器,而不会出现任何问题


编写器更新将以静默方式返回“Killed”#1815


将composer.lock文件从本地设备上载到服务器
然后运行
composer install

您可以在本地计算机的项目目录中安装程序包,然后上载所有更新的文件,大部分是安装的程序包及其依赖项,它们位于供应商文件夹composer.json和composer.lock中。

查看此对话,它应该取决于内存限制。尝试增加php cli内存限制并重试以检查正确的cli内存配置运行命令
php-i | grep memory
进一步帮助我发现docker客户端中有限的最大内存量是导致此问题的原因。