【发布时间】:2021-11-03 10:43:08
【问题描述】:
当我尝试 composer 安装我的项目时,我遇到了一些来自 symfony 供应商的语法错误。
Parse error: syntax error, unexpected '|', expecting variable (T_VARIABLE) vendor\psr\log\src\LoggerInterface.php on line 30
通过几次搜索,我发现问题出在 PHP 版本(必须 > 7.1),但实际上我的版本是 7.4.9,这是一台本地机器,我在 Windows 上使用 WAMP。 Symfony 4.4 版本。已经尝试删除供应商,.lock...
这里是我的 composer.json
{
"type": "project",
"license": "proprietary",
"require": {
"php": ">=7.1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"doctrine/annotations": "^1.13",
"mongodb/mongodb": "^1.10@dev",
"ramsey/uuid": "^4.2",
"symfony/console": "4.4.*",
"symfony/dotenv": "4.4.*",
"symfony/flex": "^1.3.1",
"symfony/form": "4.4.*",
"symfony/framework-bundle": "4.4.*",
"symfony/messenger": "4.4.*",
"symfony/yaml": "4.4.*"
},
"require-dev": {
},
"minimum-stability": "dev",
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true,
"platform": {
"php": "7.4.9"
}
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"paragonie/random_compat": "2.*",
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"@auto-scripts"
],
"post-update-cmd": [
"@auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "4.4.*"
}
}
}
有什么想法吗?
【问题讨论】:
-
您似乎拥有latest version installed,它使用PHP/8 语法(您可以使用例如
composer info psr/log进行检查)。由于某种原因,它要么忽略了您的"platform"设置,要么您进行了更改但没有更新。您是否有来自存储库的composer.lock文件?composer update有什么改变吗? -
vendor\psr\log\src\LoggerInterface.php on line 30看起来怎么样,它显然不接受几个参数,所以包或 php 存在版本问题。