如何修复 Drupal 项目中 Composer 的“PHP 版本不满足要求”错误
2023-09-09•3 分钟阅读
对于构建 Drupal 网站的人来说,Composer 至关重要。它有助于管理和添加新的网站组件,如模块和主题。但如果您对 Composer 的工作方式感到困惑,可以将其视为一个乐于助人的杂货购物者。不确定这个类比?请查看这篇文章:“理解 Composer:一个简单的杂货购物类比,以实现更好的依赖管理”。
然而,有时在将我们的工作从本地环境迁移到服务器时,我们可能会遇到“PHP 版本不满足要求”错误:
正在从锁定文件安装依赖项(包括 require-dev)
正在验证锁定文件内容是否可以在当前平台安装。
您的锁定文件不包含兼容的包集。请运行 composer update。

此错误意味着您的本地设置中的 PHP 版本与服务器上的 PHP 版本不同,从而导致 Drupal 网站出现问题。
为什么会出现“Drupal 项目中 Composer 的‘PHP 版本不满足要求’错误”?
在处理 Drupal 项目时,如果您在本地运行 composer update
,Composer 会根据您使用的 PHP 版本设置 composer.lock
文件。当此锁定文件在具有不同 PHP 版本的环境中运行时,就会出现问题。
Drupal 开发人员的解决方案:
- 同步 PHP 版本:目标是在所有环境(无论是本地、暂存还是生产环境)中使用相同的 PHP 版本。这种一致性可以防止差异,并确保 Drupal 模块和主题能够一致地运行。在本地使用
ddev
时,调整 PHP 版本非常简单。您可以使用以下命令切换到 PHP 版本 8.1:
ddev config --php-version 8.1
- 使用 Composer 的平台配置:如果您无法在所有环境中使用相同的 PHP 版本,则可以配置 Composer 来模拟特定的 PHP 版本。在您的 Drupal 项目的
composer.json
中,包含:
"config": {
"platform": {
"php": "8.1.0"
}
}
- 现在,即使您的本地版本不同,Composer 也会像运行 PHP 8.1 一样解析依赖项。
- 推送更改并更新 Drupal:提交并推送修改后的
composer.json
和composer.lock
文件。当您在服务器上拉取它们时,运行composer install
以确保 Drupal 获取正确的依赖项集。 - 定期检查 Drupal 模块的 PHP 兼容性:虽然核心 Drupal 更新通常经过充分测试,但第三方模块有时可能会出现兼容性问题。在部署之前,定期检查模块的 Composer 要求并在本地进行测试。
- Drupal 的持续集成:Acquia Pipelines 或面向 Drupal 的 CI 解决方案等工具可以帮助强制执行 PHP 版本的一致性,确保您的 Drupal 项目在部署过程中保持无错误。
结论:
使用 Drupal 和 Composer 意味着要小心匹配 PHP 版本。通过提前规划,您的网站更新可以更顺利地进行,问题更少。最好在所有地方保持相同的 PHP 版本,以便更轻松地进行开发。
祝您调试愉快!