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