在更新依赖项时,编写器挂起



我尝试使用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验证所需的证书:

  1. 下载文件http://curl.haxx.se/ca/cacert.pem
  2. 编辑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
    
  3. 再试一次

我个人发现,使用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,不要忘记等待!!

相关内容

  • 没有找到相关文章

最新更新