You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ddev环境安装Symfony5.4.9报Composer平台版本检测错误求助

问题背景

在本地ddev环境安装Symfony 5.4.9后运行,先后触发两类报错:

  1. 首次运行的致命错误:
Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.1.0". You are running 7.4.29. in /var/www/html/symfony/vendor/composer/platform_check.php on line 24
  1. 执行composer install --ignore-platform-reqs绕过平台检测后,出现解析报错:
Parse error: syntax error, unexpected '|', expecting variable (T_VARIABLE) in /var/www/html/symfony/vendor/psr/log/src/LoggerInterface.php on line 30

本地主机命令行执行php -v查询,显示CLI端PHP版本为8.1.6:

❯ php -v
PHP 8.1.6 (cli) (built: May 12 2022 23:44:22) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.6, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.6, Copyright (c), by Zend Technologies

项目composer.json中声明的PHP版本要求为>=7.2.5,相关配置片段如下:

"type": "project",
    "license": "proprietary",
    "minimum-stability": "stable",
    "prefer-stable": true,
    "require": {
        "php": ">=7.2.5",
        "ext-ctype": "*",
        "ext-iconv": "*",
        "symfony/console": "*",
        "symfony/dotenv": "*",
        "symfony/flex": "^1.17|^2",
        "symfony/framework-bundle": "*",
        "symfony/runtime": "*",
        "symfony/yaml": "*"
    },
    "require-dev": {
    },
    "config": {
故障原因
  • 本地主机CLI的PHP环境和ddev容器内的Web运行环境是相互独立的:本地主机PHP版本为8.1.6,但ddev容器默认配置下Web服务使用PHP 7.4.29,浏览器访问项目走容器内PHP环境,因此触发版本不兼容报错。
  • 加--ignore-platform-reqs参数安装依赖时,Composer会跳过PHP版本校验,拉取最新版依赖包。其中psr/log 3.x版本使用了PHP 8.0才支持的联合类型语法(即报错中提到的|符号),PHP 7.4无法解析该语法,因此抛出解析错误。
  • composer.json中多个Symfony组件的版本约束使用通配符*,即使声明了PHP >=7.2.5,Composer仍会优先拉取最新版组件,这类新版组件多数要求PHP 8.1+,和容器内低版本PHP不兼容。
解决方法

使用ddev/docker部署环境时,需要在项目根目录的config.yml中明确配置容器内PHP版本,保证版本和Symfony依赖要求匹配,参考配置如下:

name: ddev-gitpod
type: drupal9
docroot: web
php_version: "8.1"
webserver_type: nginx-fpm
router_http_port: "80"
router_https_port: "443"
xdebug_enabled: false
additional_hostnames: []
additional_fqdns: []
database:
  type: mariadb
  version: "10.3"
nfs_mount_enabled: false
mutagen_enabled: false
use_dns_when_possible: true
composer_version: ""
web_environment: []
nodejs_version: "16"

配置修改完成后按以下步骤操作:

  • 执行ddev restart重启容器,让新的PHP版本配置生效
  • 删除之前错误安装生成的依赖目录:ddev exec rm -rf vendor
  • 执行ddev composer install重新安装依赖,不要加--ignore-platform-reqs参数
  • 依赖安装完成后即可正常访问项目

注意:ddev环境下不要直接在本地主机执行composer命令安装依赖,必须加ddev前缀调用容器内的composer,保证安装依赖时使用容器内的PHP版本,避免出现版本不匹配问题。

内容的提问来源于stack exchange,提问作者balrcoding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 13:12:19