我尝试使用composer update
但它挂在Updating dependencies (including require-dev)
所以我尝试了更新composer,dump-autoload之类的东西,但似乎没有任何效果。然后我以详细模式运行它:composer update -vvv
我注意到它在读这个json时挂了:
Reading path/to/Composer/repo/https---packagist.org/provider-cordoval$hamcrest-php.json from cache
我尝试在packagist.org上搜索cordoval / hamcrest-php但无法找到它。这并未在我的composer.json
在我的供应商文件夹中搜索,我注意到我使用的mockery/mockery
包需要hamcrest/hamcrest-php
,但我无法找到任何可以引用cordoval
的内容。
知道什么是错的以及我如何解决它以便我可以进行更新?
这是我的composer.json:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
"laravel/framework": "4.2.*",
"iron-io/iron_mq": "dev-master",
"phpunit/phpunit": "4.2.*",
"mockery/mockery": "dev-master",
"xethron/migrations-generator": "dev-master",
"mailgun/mailgun-php": "dev-master"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
},
"minimum-stability": "stable"
}
我尝试从我的composer.json中删除一些软件包,包括" mockery / mockery"包。它所做的唯一改变是Composer会挂在另一个文件上。
离开Composer这么长时间之后,它终于退出了,如下所示:
/path/to/ComposerSetup/bin/composer: line 18: 1356 Segmentation fault php "${dir}/composer.phar" $*
不知道该怎么做......
答案 0 :(得分:54)
就我而言,在我的8GB ram Mac上花费了很长时间。要检查进度并验证它是否正在解决依赖关系,请在详细模式下运行composer。这是我在问题中错过的一种方法,因此在这里值得重申。
composer update -vvv
答案 1 :(得分:10)
有时它被卡住是因为它试图使用HTTP而不是https,所以只需运行
composer config --global repo.packagist composer https://packagist.org
答案 2 :(得分:8)
首先:检查防火墙和代理连接。如果一切正常但作曲家仍在悬挂,请尝试清除作曲家缓存:
composer clear-cache
https://getcomposer.org/doc/03-cli.md#clear-cache
第二个选项如果这些步骤没有修复你的作曲家,那么系统可能没有足够的RAM内存可用(我遇到了这个问题并且症状与你描述的相同)。此时您有两个选择:
a)增加内存(虚拟机或Docker):您的容器或VM需要更多可用内存。请遵循以下指南:https://stackoverflow.com/a/44533437/3518053
b)生成交换文件(Linux):尝试创建交换文件以提供更多内存: (以上命令来自composer killed while updating)
free -m
mkdir -p /var/_swap_
cd /var/_swap_
#Here, 1M * 2000 ~= 2GB of swap memory
dd if=/dev/zero of=swapfile bs=1M count=2000
mkswap swapfile
swapon swapfile
chmod 600 swapfile
echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab
#cat /proc/meminfo
free -m
答案 3 :(得分:1)
我通过运行命令 NOT IN VS CODE TERMINAL
解决了该问题答案 4 :(得分:0)
重新启动系统。
我今天遇到了同样的问题。通过建议,关闭xdebug,但没有帮助。已验证所有文件存在。重新启动我的系统,它工作正常。
答案 5 :(得分:0)
检查您是否正在运行所需的最低php版本
与composer.json文件中指定的所需php版本进行比较
打开终端运行
php -v
交叉检查composer.json文件,请参见下面的示例
"require": {
"php": "^7.1.3",
}
答案 6 :(得分:0)
检查php.ini中[xdebug] zend_extension =“文件/路径”的路径
答案 7 :(得分:0)
对我来说,问题出在xDebug。我正在使用IDE的终端,调试器正在侦听传入的连接(一如既往)。关闭监听功能(无需禁用扩展功能)可以解决此问题。
答案 8 :(得分:0)
我通过编辑php.ini
文件来解决此问题,以便设置ssl验证所需的默认证书:
编辑php.ini
来设置拍子:
[openssl]
; The location of a Certificate Authority (CA) file on the local filesystem
; to use when verifying the identity of SSL/TLS peers. Most users should
; not specify a value for this directive as PHP will attempt to use the
; OS-managed cert stores in its absence. If specified, this value may still
; be overridden on a per-stream basis via the "cafile" SSL stream context
; option.
openssl.cafile=C:\web\certs\cacert.pem
curl.cainfo=C:\web\certs\cacert.pem
再试一次
答案 9 :(得分:0)
我在另一篇文章中发现了这一点,发现执行以下操作很有用。这似乎是composer程序包缓存中的缓存/下载问题。
composer update -vvv
然后执行以下操作: 添加或编辑作曲家文件以具有这些设置。
"repositories": [
{
"type": "composer",
"url": "https://packagist.org"
},
{ "packagist": false }
]
答案 10 :(得分:0)
这对我有用:
composer self-update
答案 11 :(得分:-1)
为我工作。 首先运行自动加载命令,然后清除缓存并运行更新。
composer dump-autoload
php artisan cache:clear
php artisan view:clear
update composer