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

问题描述 投票:0回答:8

当我尝试 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...

这里是 phpinfo() 的 php 版本

这里是 wamp 的 php 版本

这里是 CLI 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.*"
    }
}
}

有什么想法吗?

php windows wamp symfony4
8个回答
19
投票

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

"config": {
        "platform": {
            "php": "7.4.21"
         }
   }

跑步。

composer update

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


14
投票

我找到了解决方案。

使用以下命令卸载 Composer

sudo apt remove composer

sudo apt autoremove

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

sudo update-alternatives --config php 

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

https://getcomposer.org/download/


9
投票

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

这对我有用:)

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


0
投票

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


0
投票

当我将ubuntu版本从20升级到22时,我也遇到了这个错误。我使用的是php 7.4版本。我尝试在 google 上找到解决方案,主要是说将 php 版本升级到 8。我更新到 php 8 版本,但作曲家再次开始在 Laravel 项目中抛出错误。没什么帮助。所以我卸载了 php 8,然后重新安装 Composer 和 php 7.4。一切开始工作正常。所以我的结论是。我们可以尝试以下步骤:

  1. 重新安装PHP版本
  2. 如果您正在使用 Composer,请重新安装 Composer。
  3. 重新启动您的 apache 或 nginx 服务器

0
投票

这可能是由于使用了错误的实际 PHP 版本与 Composer 中指定的 PHP 版本造成的。


0
投票

如果其他解决方案不起作用,你可以尝试这个:

curl -sS https://getcomposer.org/installer | php
php composer.phar update

0
投票

删除你的作曲家

sudo apt remove composer
sudo apt autoremove

再次安装composer

https://getcomposer.org/download/

注意:请使用composer非root用户安装。

© www.soinside.com 2019 - 2024. All rights reserved.