skip to Main Content

I have some syntax errors from symfony vendor when i’m trying to composer install my project.

Parse error: syntax error, unexpected '|', expecting variable (T_VARIABLE) vendorpsrlogsrcLoggerInterface.php on line 30

With several search, I saw the problem is from PHP version (have to be > 7.1), but actually my version is 7.4.9, this is a local machine, i’m working with WAMP on Windows. Symfony 4.4 version. Already tried to delete vendor, .lock…

Here the php version from phpinfo()
PHP version from phpinfo()

Here php version from wamp
PHP VERSION from wamp

Here php version from CLI php-v php version from php v

Here my 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.*"
    }
}
}

Have some idea ?

7

Answers


  1. Delete the vendor folder, delete the composer.lock file, then run composer install. that worked for me

    Login or Signup to reply.
  2. I added this in the composer.json and it worked.

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

    The run. composer update

    This downgraded psr/log to a lower version from 2.0 and resolved my issue.

    Login or Signup to reply.
  3. This character ‘|’ is used only in php version >= 8.0
    You can update the php version

    That worked for me 🙂

    References: https://www.php.net/releases/8.0/en.php#union-types

    Login or Signup to reply.
  4. I also faced this error when I upgrade ubuntu version from 20 to 22. I was using php 7.4 version. I tried to find the solution on google and mostly was saying to upgrade php version to 8. I updated to php 8 version but then again composer start throwing errors in Laravel project. Nothing helpful. So I uninstall php 8 and then reinstall composer and php 7.4. Everything start working fine. So in my conclusion. We can try these steps:

    1. Reinstall Php version
    2. Reinstall composer if you are using composer.
    3. Restart your apache or nginx server
    Login or Signup to reply.
  5. I got the solution.

    uninstall composer using following command

    sudo apt remove composer
    
    sudo apt autoremove
    

    switch to compatible php you are looking for using following command (if multiple php versions are running on your system)

    sudo update-alternatives --config php 
    

    then install composer using older method given on below link

    https://getcomposer.org/download/

    Login or Signup to reply.
  6. This can be caused by using the wrong actual PHP version with the PHP-version stated in composer.

    Login or Signup to reply.
  7. If the other solutions not does works, u can try this:

    curl -sS https://getcomposer.org/installer | php
    php composer.phar update
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search