Skip to content

Instantly share code, notes, and snippets.

@bgarrant
Last active September 30, 2022 08:08
Show Gist options
  • Save bgarrant/b9a2f7fb8ff06c9a45086359ded7a95e to your computer and use it in GitHub Desktop.
Save bgarrant/b9a2f7fb8ff06c9a45086359ded7a95e to your computer and use it in GitHub Desktop.
How to Switch PHP Version in Laravel Valet between PHP 7.1 and PHP 5.6

How to Switch PHP Version in Laravel Valet between PHP 7.1 and PHP 5.6

Valet switch PHP version with these commands

Install PHP 5.6 and switch Valet to PHP 5.6

valet stop
brew unlink php71
brew install php56
brew install php56-mcrypt
brew link php56
valet start

Then to switch back to PHP 7.1 it is as simple as:

valet stop
brew unlink php56
brew link php71
valet start

Then to switch to PHP 5.6:

valet stop
brew unlink php71
brew link php56
valet start
@kjbrum
Copy link

kjbrum commented Mar 19, 2018

I needed to do a few more things to get it working:

# Update global composer packages
$ composer global update

# Reinstall Valet
$ valet install

@willemvb
Copy link

In Homebrew ^1.5 a lot of PHP extensions were removed, causing brew install php56-mcrypt not to work anymore.
See the official announcement.
Luckily, mcrypt seems included in the newer formula for [email protected]

Other extensions can be installed with PECL. It looks like you need to do this every time you switch between versions though.

pecl uninstall -r imagick
pecl install imagick

@fonzizi
Copy link

fonzizi commented Apr 28, 2018

Just to add to @kjbrum extra steps - unless you use valet plus, you may also have to edit your ~/.composer/composer.json file before you run composer global update.

@ruslanashaari
Copy link

For those who're using Ubuntu Valet (unofficial), after installing certain version of php, you just need to stop the valet before switching the php version.

valet stop

#choose your preffered php (you need to install php first)
update-alternatives --config php

valet start

For me, php7.2 already pre-installed in my Ubuntu 18.04. So I installed php5.6, php5.6-fpm and php5.6-cli before I can switch between my preferred php version.

@subdesign
Copy link

the problem is, if I'm on php 5.6 and want to switch to php 7.1, Valet fails:

PHP Parse error:  syntax error, unexpected '->' (T_OBJECT_OPERATOR) in /Users/x/.composer/vendor/tightenco/collect/src/Collect/Support/Collection.php on line 179

so can't stop Valet before php change..

@opdavies
Copy link

Had the same thing, had to remove the global composer.lock file and vendor directory, and then re-required it.

$ rm -rf ~/.composer/composer.lock ~/.composer/vendor
$ composer global req laravel/valet

@altynbek07
Copy link

@wakjoko
Copy link

wakjoko commented Jun 20, 2020

on Ubuntu or linux, put this in your .profile

#switch php version
switch-php() {
    valet stop
    sudo update-alternatives --set php /usr/bin/php$1
    rm -f ~/.valet/valet.sock
    valet install
}

then use it as switch-php 7.1 or switch-php 7.4

@davidtowoju
Copy link

One liner here, simply type this in your terminal

valet use [email protected]

@rafaellaurindo
Copy link

One liner here, simply type this in your terminal

valet use [email protected]

Aweeesome! Thank you for sharing it! 🚀

@faytekin
Copy link

faytekin commented Apr 7, 2021

you can use phpmon

brew tap nicoverbruggen/homebrew-cask
brew install --cask phpmon

@KevinDrew
Copy link

I had to do
valet use [email protected] --force
without it, it only changed the cli, and phpinfo in the browser showed 8.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment