【发布时间】:2021-12-16 14:16:15
【问题描述】:
我用 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 文件存在冲突,但找不到解决方法。请问有什么帮助吗?
【问题讨论】:
-
我已经删除了不相关的标签——即使您只是在部署到另一台服务器时才看到这一点,该部署本身也不会对这个错误负责。出于好奇:您是如何安装任何软件包以达到这种不一致的状态的?
标签: symfony composer-php symfony5