无法更新作曲家

Unable to update composer

我使用 Symfony5 开发了一个应用程序并尝试在 Heroku 上部署,但在部署时出现错误。这是构建日志:


 WARNING: Your 'composer.lock' is out of date!    
 The 'composer.lock' file in your project is not up to date with
 the main 'composer.json' file. This may result in installation
 of incorrect packages or package versions.    
 The lock file is required in order to guarantee reliable and
 reproducible installation of dependencies across systems and
deploys. It must always be kept in sync with 'composer.json'.

Whenever you change 'composer.json', ensure that you perform
the following steps locally on your computer:
1) run 'composer update'
2) add all changes using 'git add composer.json composer.lock'
3) commit using 'git commit'

Ensure that you updated the lock file correctly, and that you ran 'git add' on both files, before deploying again.
Please remember to always keep your 'composer.lock' updated in lockstep with 'composer.json' to avoid common problems related to dependencies during collaboration and deployment.

-----> Installing dependencies...
       Composer version 2.1.9 2021-10-05 09:47:38
       Installing dependencies from lock file
       Verifying lock file contents can be installed on current platform.
       Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. It is recommended that you run `composer update` or `composer update <package name>`.

WARNING: An error occurred during a database connection or query
ERROR: Dependency installation failed
 The 'composer install' process failed with an error. The cause may be the download or installation of packages, or a pre- or post-install hook (e.g. a 'post-install-cmd' item in 'scripts') in your 'composer.json'.    

Typical error cases are out-of-date or missing parts of code, timeouts when making external connections, or memory limits. Check the above error output closely to determine the cause of the problem, ensure the code you're pushing is functioning properly, and that all local changes are committed correctly.
    
REMINDER: the following warnings were emitted during the build;
check the details above, as they may be related to this error:
- Your 'composer.lock' is out of date!
- An error occurred during a database connection or query
Push rejected, failed to compile PHP app.
Push failed

所以我在终端中尝试 运行 composer update 但收到此错误消息:

Loading composer repositories with package information
Restricting packages listed in "symfony/symfony" to "5.3.*"
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires phpunit/phpunit 4.7.7 -> satisfiable by phpunit/phpunit[4.7.7].
    - phpunit/phpunit 4.7.7 requires symfony/yaml ~2.1|~3.0 -> found symfony/yaml[v2.1.0, ..., v2.8.52, v3.0.0, ..., v3.4.47] but it conflicts with your root composer.json require (5.3.*).
  Problem 2
    - Root composer.json requires phpspec/phpspec 2.2.1 -> satisfiable by phpspec/phpspec[2.2.1].
    - phpspec/phpspec 2.2.1 requires symfony/console ~2.3 -> found symfony/console[v2.3.0, ..., v2.8.52] but it conflicts with your root composer.json require (5.3.*).

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

我知道与 phpunit、composer.json 和 .lock 文件有冲突,但找不到解决方法。有什么帮助吗?

PHPUnit 4.7.7 已经过时(2015 年 7 月发布),并且它的依赖项与要求的 Symfony 5.3 冲突。您应该从 PHAR 安装 PHPUnit(这是推荐的方式),或者将其升级到更新的版本

我解决了这个问题。问题是 composer.lock 与 composer.json 不一致,所以我执行了以下步骤:

  1. 删除 composer.lock 文件:

    rm -rf composer.lock

  2. 更新作曲家(它将自动创建 composer.lock 文件):

    composer update

  3. 验证 composer.lock 具有相同的依赖项版本并在必要时进行更新

  4. 保存并将修改推送到 git 和 heroku :

       git commit -m "Update composer files"
       git push
       git push heroku`
    

最佳答案 这是解决方案

步骤 01 转到您的 laravel 项目文件夹

步骤02运行这段代码

composer config -g repo.packagist composer https://packagist.org

更多信息:https://www.programmersought.com/article/81437406841/