我尝试使用composer update
更新我今天正在工作的Laravel项目
但它挂在Updating dependencies (including require-dev)
上
所以我尝试了更新composer, dump- auload之类的东西,但似乎都不起作用。然后在详细模式下运行: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,包括"mock/mock "包。唯一的变化是Composer会挂在一个不同的文件上。
让Composer像这样运行了很长一段时间后,它最终退出,并出现如下错误:
/path/to/ComposerSetup/bin/composer: line 18: 1356 Segmentation fault php "${dir}/composer.phar" $*
不知道该怎么办…
在我的情况下,它只是在我的8GB ram Mac上花费了很长时间。要检查进度并验证它是否通过依赖项,请在详细模式下运行composer。这是我在问题中遗漏的一个方法,所以值得在这里重新说明。
composer update -vvv
所以事实证明问题是与php的xdebug
扩展。在我的php.ini
中禁用它后,composer运行没有任何问题。
需要注意的是,当从缓存中读取文件时,挂起实际上并没有发生。这是在编写器试图解决依赖关系之后的步骤。它只是从未完成该步骤,也从未打印输出。这就是为什么无论我做什么,它似乎总是卡在读取缓存中的文件上。
首先:检查防火墙和代理连接。如果一切正常,但作曲器仍然挂起,请尝试清除作曲器缓存:
composer clear-cache
https://getcomposer.org/doc/03-cli.md clear-cache
第二个选项如果这些步骤不能修复您的作曲器,那么系统可能没有足够的可用RAM内存(我面临这个问题,症状与您描述的相同)。此时,您有两个选项:
a) 增加内存(虚拟机或Docker):您的容器或虚拟机需要更多可用内存。遵循以下指南:https://stackoverflow.com/a/44533437/3518053
b) 生成交换文件(Linux):尝试创建交换文件以提供更多内存:(以上命令来自更新时杀死的作曲家)
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
有时它会卡住,因为它试图使用HTTP而不是https,所以只需运行这个
composer config --global repo.packagist composer https://packagist.org
为我工作。首先运行自动加载命令,然后清除缓存并运行更新。
composer dump-autoload
php artisan cache:clear
php artisan view:clear
composer update
对我来说,问题是与xDebug。我正在使用IDE的终端,调试器正在监听传入的连接(一如既往)。关闭监听(不需要禁用扩展)解决了这个问题。
这工作对我来说:
composer self-update
我通过运行命令NOT IN VS CODE TERMINAL
我在另一篇文章中发现了这一点,我发现做下面的工作。这似乎是一个缓存/下载到编写器包缓存的问题。
composer update -vvv
然后执行以下操作:添加或编辑您的编写器文件以具有这些设置。
"repositories": [
{
"type": "composer",
"url": "https://packagist.org"
},
{ "packagist": false }
]
重新启动您的系统。
今天我遇到了同样的问题。按照建议,关闭了xdebug,但没有帮助。验证所有文件都存在。重新启动了我的系统,它工作了。
检查您是否正在运行最低要求的php版本
与编写器中指定的所需php版本进行比较。json文件
打开终端运行
php -v
交叉检入编写器。Json文件见下面的示例
"require": {
"php": "^7.1.3",
}
检查[xdebug] zend_extension =" file/path"在php.ini中的路径
我通过编辑php.ini
文件来解决这个问题,以便设置ssl验证所需的证书:
- 下载文件http://curl.haxx.se/ca/cacert.pem
-
编辑
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:webcertscacert.pem curl.cainfo=C:webcertscacert.pem
-
再试一次
我个人发现,使用free
时,我的系统有0kb的交换存储空间。使用https://linuxize.com/post/create-a-linux-swap-file/创建1GB交换文件立即解决了这个问题。
我的问题解决了:改变wifi(我用我的手机)-等待(大约5分钟)下面是输出:
Creating a "magento/project-community-edition" project at "/tmp/exampleproject"
Installing magento/project-community-edition (2.4.5-p1)
- Installing magento/project-community-edition (2.4.5-p1): Loading from cache
Created project in /tmp/exampleproject
Loading composer repositories with package information
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies (including require-dev)
等待后,我看到以下输出:
Updating dependencies (including require-dev)
Package operations: 546 installs, 0 updates, 0 removals
- Installing laminas/laminas-dependency-plugin (2.4.0): Loading from cache
不知道是什么原因,但我也运行了以下命令:
要诊断问题,您应该运行以下命令:
composer diagnose
如果你得到OK从每行(这应该是一个警告,但不重要,我不得不),这意味着没有问题的作曲家。试着切换wifi,不要忘记等待!!