【问题标题】:Parse error: syntax error, unexpected '|', expecting variable (T_VARIABLE) Symfony PHP VERSION WAMP Windows解析错误:语法错误,意外的 '|',期望变量 (T_VARIABLE) Symfony PHP VERSION WAMP Windows
【发布时间】: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...

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

有什么想法吗?

【问题讨论】:

  • 您似乎拥有latest version installed,它使用PHP/8 语法(您可以使用例如composer info psr/log 进行检查)。由于某种原因,它要么忽略了您的"platform" 设置,要么您进行了更改但没有更新。您是否有来自存储库的composer.lock 文件? composer update 有什么改变吗?
  • vendor\psr\log\src\LoggerInterface.php on line 30 看起来怎么样,它显然不接受几个参数,所以包或 php 存在版本问题。

标签: php windows wamp symfony4


【解决方案1】:

我在 composer.json 中添加了这个并且它起作用了。

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

跑步。 composer update

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

【讨论】:

  • 值得注意的是,该问题的设置已经包含类似的platform设置。可能是 OP 没有使用 composer update 刷新,或者他们有其他问题。
【解决方案2】:

删除供应商文件夹,删除 composer.lock 文件,然后运行 ​​composer install。对我有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-16
    • 2018-07-25
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 2015-11-19
    • 2019-01-05
    • 1970-01-01
    相关资源
    最近更新 更多