当我尝试 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.*"
}
}
}
有什么想法吗?
我将其添加到composer.json 中并且它起作用了。
"config": {
"platform": {
"php": "7.4.21"
}
}
跑步。
composer update
这将 psr/log 从 2.0 降级到较低版本并解决了我的问题。
我找到了解决方案。
使用以下命令卸载 Composer
sudo apt remove composer
sudo apt autoremove
使用以下命令切换到您正在寻找的兼容 php(如果您的系统上运行多个 php 版本)
sudo update-alternatives --config php
然后使用下面链接中给出的旧方法安装作曲家
这个字符“|”仅在 php 版本 >= 8.0 中使用 您可以更新php版本
这对我有用:)
删除vendor文件夹,删除composer.lock文件,然后运行composer install。这对我有用
当我将ubuntu版本从20升级到22时,我也遇到了这个错误。我使用的是php 7.4版本。我尝试在 google 上找到解决方案,主要是说将 php 版本升级到 8。我更新到 php 8 版本,但作曲家再次开始在 Laravel 项目中抛出错误。没什么帮助。所以我卸载了 php 8,然后重新安装 Composer 和 php 7.4。一切开始工作正常。所以我的结论是。我们可以尝试以下步骤:
这可能是由于使用了错误的实际 PHP 版本与 Composer 中指定的 PHP 版本造成的。
如果其他解决方案不起作用,你可以尝试这个:
curl -sS https://getcomposer.org/installer | php
php composer.phar update
删除你的作曲家
sudo apt remove composer
sudo apt autoremove
再次安装composer
https://getcomposer.org/download/
注意:请使用composer非root用户安装。