CoochieCook
CoochieCook

Reputation: 11

Laravel/Homestead - Composer won't let me change PHP version? Can't update Laravel/PHP

I'm new to Laravel and decided to take the route of Homestead, setting up Vagrant and getting familiar with something other than WAMP.

After a bit of confusion and a learning curve, I've gotten everything working, projects connected, loading and I am now familiar with Vagrant and moving my way around. Everything is great... Until I try to upgrade from Laravel 8 to 9.

In an effort to so, I have my composer.json file as such:

{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "php": "^8.0",
        "fruitcake/laravel-cors": "^2.0",
        "guzzlehttp/guzzle": "^7.0.1",
        "laravel/framework": "^9.0",
        "laravel/sanctum": "^2.11",
        "laravel/tinker": "^2.5"
    },
    "require-dev": {
        "spatie/laravel-ignition": "^1.0",
        "fakerphp/faker": "^1.9.1",
        "laravel/sail": "^1.0.1",
        "mockery/mockery": "^1.4.2",
        "nunomaduro/collision": "^6.1",
        "phpunit/phpunit": "^9.3.3"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-update-cmd": [
            "@php artisan vendor:publish --tag=laravel-assets --ansi"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ]
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true,
        "platform": {
            "php": "8.0.2"
         }
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}

Despite all seeming correct, I get the following error when I try to update via composer update

[ErrorException]
  Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.0.2". You are run
  ning 7.4.9.

I run a check:

C:\localdev\Laravel>php --version
PHP 7.4.9 (cli) (built: Aug  4 2020 11:52:41) ( ZTS Visual C++ 2017 x64 )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Sure enough it's correct. HOWEVER - If I echo out my PHP version on my website, I am getting 8.0.9.

If I check my version in phpmyadmin, same thing - PHP 8.0.9.

Let's check Vagrant itself...

vagrant@homestead:~$ php --version
PHP 8.0.9 (cli) (built: Jul 30 2021 13:03:39) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.9, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.9, Copyright (c), by Zend Technologies

I should also add that I have WAMP server on my machine that handles some Wordpress projects. I had that running on PHP 7.4.9... AH HA! I thought... Changed the version on WAMP to 8.0.9 - no luck, same result.

What gives? Why am I unable to change my PHP version (or better yet, how?) for my Laravel projects?

Upvotes: 1

Views: 562

Answers (2)

Lucia Clifford
Lucia Clifford

Reputation: 136

following on what Futureweb mentioned, I had to force my PHP version in the Homestead.yaml file and then run:

vagrant reload --provision

I then managed to get it working.

Upvotes: 0

futureweb
futureweb

Reputation: 442

You need to edit your Homestead.yaml file you can specify your php version there

sites:
- map: site-name.test
  to: /path/to/your/site
  type: Laravel
  php: "8.1"

if however you need to change the CLI php version you need to ssh into your vagrant box and run

sudo update-alternatives --config php

you can then select a php version to use

Upvotes: 2

Related Questions