Upgrade to PHP 8 with Homebrew on Mac

Note: PHP 8 hasn’t been released yet, so it’ll be a few more hours before you can use Homebrew to update to it.

#Upgrading with Homebrew

Start by making sure brew is up-to-date:

brew update

Next, upgrade PHP. You can either use the built-in php recipe, use tap shivammathur/homebrew-php. I'd recommend the second approach, since it allows you to easily install several PHP versions and switch between them.

#Normal upgrade

brew upgrade php

#Upgrade with shivammathur/homebrew-php

brew tap shivammathur/php
brew install shivammathur/php/php@8.0

To switch between versions, use the following command:

brew link --overwrite --force php@8.0

You can read more in the repository.

#Next steps

Check the current version by running php -v:

php -v

Restart Nginx or Apache:

sudo nginx -s reloadsudo apachectl restart

And make sure that your local web server also uses PHP 8 by visiting this script:

# index.php, accessible to your web serverphpinfo();

The version should show 8.0.x.

Note: if you’re using Laravel Valet, please keep on reading, you need some extra steps in order for the web server to properly work.


If you’re using Laravel Valet, you should do the following steps to upgrade it:

composer global update

Now run valet install:

valet install


PHP extensions are installed using pecl. I personally use Imagick, Redis and Xdebug. They can be installed like so:

pecl install imagick
pecl install redis
pecl install xdebug

You can run pecl list to see which extensions are installed:

pecl list# Installed packages, channel pecl.php.net:
# =========================================
# Package Version State
# imagick 3.4.4 stable
# redis 5.1.1 stable
# xdebug 2.8.0 stable

You can search for other extensions using pecl search:

pecl search pdf# Retrieving data...0%
# ..
# Matched packages, channel pecl.php.net:
# =======================================
# Package Stable/(Latest) Local
# pdflib 4.1.2 (stable) Creating PDF on the fly with the PDFlib library

Make sure to restart your web server after installing new packages:

sudo nginx -s reloadsudo apachectl restart

If you’re using Laravel Valet, you should restart it as well.

valet restart

Make sure all extensions are correctly installed and loaded by checking both your PHP webserver and CLI installs:

php -i | grep redisvar_dump(extension_loaded('redis'));

If extensions aren’t properly loaded, there are two easy fixes.

First, make sure the extensions are added in the correct ini file. You can run php --ini to know which file is loaded:

Configuration File (php.ini) Path: /usr/local/etc/php/7.4
Loaded Configuration File: /usr/local/etc/php/7.4/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d
Additional .ini files parsed: /usr/local/etc/php/7.4/conf.d/ext-opcache.ini,

Now check the ini file:


Note that if you’re testing installed extensions via the CLI, you don’t need to restart nginx, apache or Valet when making changes to ini settings.

The second thing you can do, if you’re updating from an older PHP version which also used pecl to install extension; is to reinstall every extension individually.

pecl uninstall imagick
pecl install imagick

#Last step

Finally you should test and upgrade your projects for PHP 8 compatibility.




Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Deploy the WordPress on Kubernetes and Mysql(RDS) database on AWS using terraform

Simple first-person controls in Unity

Team Page Redesign — Redefining Corporate Hierarchy

Serverless Experimentation Framework for Monolithic to Microservice Transformations

Hardware remote deployment (in as much devilish detail as possible)

How to avoid these 5 mistakes restaurants make when using POS software in India

IDAVOLL DAO Bi-Weekly Newsletter- February

GO-SQUADS Tech 3.0 Mini-Bootcamp: Take Note, CS Curricula

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Zache Leto

Zache Leto

More from Medium

What is VCS? What is Git? Basic Git command

Building the Second Version of My App! ETP1