解析错误:语法错误,意外的“|”,期望变量(T_VARIABLE)Symfony PHP VERSION WAMP Windows

aka*_*ona 36 php windows wamp symfony4

当我尝试 Composer 安装我的项目时,我遇到了来自 symfony 供应商的一些语法错误。

Parse error: syntax error, unexpected '|', expecting variable (T_VARIABLE) vendor\psr\log\src\LoggerInterface.php on line 30
Run Code Online (Sandbox Code Playgroud)

经过多次搜索,我发现问题出在 PHP 版本(必须 > 7.1),但实际上我的版本是 7.4.9,这是本地计算机,我在 Windows 上使用 WAMP。Symfony 4.4 版本。已尝试删除供应商,.lock...

这里是 phpinfo() 的 php 版本 来自 phpinfo() 的 PHP 版本

这里是 wamp 的 php 版本 来自 wamp 的 PHP 版本

这里是来自 CLI php-v 的 php 版本 php v 的 php 版本

这是我的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.*"
    }
}
}
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

小智 24

我将其添加到composer.json 中并且它起作用了。

"config": {
        "platform": {
            "php": "7.4.21"
         }
   }
Run Code Online (Sandbox Code Playgroud)

运行。composer update

这将 psr/log 从 2.0 降级到较低版本并解决了我的问题。


vis*_*ote 19

我得到了解决方案。

使用以下命令卸载作曲家

sudo apt remove composer

sudo apt autoremove
Run Code Online (Sandbox Code Playgroud)

使用以下命令切换到您正在寻找的兼容 php(如果您的系统上运行多个 php 版本)

sudo update-alternatives --config php 
Run Code Online (Sandbox Code Playgroud)

然后使用下面链接中给出的旧方法安装作曲家

https://getcomposer.org/download/


小智 10

这个字符“|” 仅在php版本>=8.0时使用可以更新php版本

这对我有用:)

参考文献:https ://www.php.net/releases/8.0/en.php#union-types


小智 0

删除vendor文件夹,删除composer.lock文件,然后运行composer install。这对我有用