Set Up Laravel Valet on macOS for Local WordPress Development

    This is a guide on how to set up Laravel Valet on macOS for a WordPress local development environment. Using Valet as a WordPress local development solution has the main benefits of speed, being lightweight and using fewer configurations to go wrong than say a solution like Vagrant.

    There is a 2nd related article that looks at getting WordPress themes, plugins and settings already installed and ready to deploy.

    Valet runs only on macOS and runs directly on top of the operating system, not in a virtual container.

    The key software components needed are Homebrew; a package manager and Laravel; a PHP framework.

    Valet itself has an Nginx, PHP 7.3 and DnsMasq and by default uses the .test domain name, you add in a database MariaDB or MySQL. Once the software is all installed Valet itself will launch automatically on startup of macOS.

    Set Up Local Development Environment

    Install Homebrew

    First up is to install Homebrew so the key parts of the web stack such as PHP and MySQL/MariaDB can get installed easily.

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

    This will install the Homebrew package manager and Xcode command line tools if not already installed.

    Install composer with Homebrew

    brew install composer

    Get PHP and MySQL set up

    Install PHP

    brew install php

    For the database you can choose between MariaDB and MySQL and which version of MySQL, since version 8 is not supported at a number of hosting panels, version 5.7 maybe safer – otherwise drop the @5.7 suffix. For mariaDB I would use 10.3 as 10.4 has some root password changes.

    Also if you are using a version of the app using @10.3 etc, after install you need to add the path to your shell as it is an older Homebrew formula, you are remonded of this at the shell prompt after Homebrew installs – example below of path with mariaDB path in .bash_profile

    export PATH="/usr/local/opt/[email protected]/bin:~/bin:~/.composer/vendor/bin:/usr/local/sbin:$PATH"

    Install MySQL/MariaDB – background service works after restart

    brew install [email protected]


    brew install [email protected]

    Start it as background service

    brew services start [email protected]

    brew services start [email protected]

    MySQL/MariaDB installs as user root with no password.

    Get Laravel and Valet set up

    Install Laravel

    composer global require "laravel/installer"

    Install Valet with composer

    composer global require laravel/valet

    Make sure your macOS shell path has the following location, this will allow you to easily use valet commands on the command line – if you don’t include it you will need to prefix all valet commands with ~/.composer/vendor/bin/


    Install valet

    valet install

    Now it will install dnsmasq and set up Nginx and PHP and start valet, some basic valet commands below…

    valet stop

    valet restart

    valet --version

    Do a ping test to a fictitious domain, look for some pingbacks from

    ping blah.test

    A responding ping will verify dnsmasq and the other components have been successfully set up.

    Confirm you have dnsmaq, mysql, Nginx and php running…

    brew services list

    Output should be…

    [email protected] ~ % brew services list
    Name      Status  User  Plist
    dnsmasq   started root  /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
    [email protected] started admin /Users/admin/Library/LaunchAgents/[email protected]
    nginx     started root  /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
    php       started root  /Library/LaunchDaemons/homebrew.mxcl.php.plist

    To update Laravel Valet

    composer global update

    valet install

    valet restart

    Webroot & park

    Probably the best method for a webroot directory is to use the Sites folder in your home, this was a traditional webroot in the past of the macOS user account filing system – if one is not there either make one in the Finder or via the Terminal

    mkdir ~/Sites

    Register the Sites folder with Valet, so any top level folders will be treated as a serving site – use the park command

    cd ~/Sites

    valet park

    There is also a valet link command that allows a directory somewhere else in the filing system to serve its content as a webroot, it does so by putting a symbolic link in the park directory – Sites.

    To set up new Laravel project sites you can use the command

    laravel new sitename

    The first site created this wat takes a while with a number of downloads when it is done a new http://sitename.test is viewable in the browser – but what about with an actual WordPress install?  – see next.


    WordPress and Valet

    So the best code to serve up ready made WordPress sites is wp-cli-valet-command it can spin up sites very quickly and can be further enhanced taking advantage of bash scripting.

    First of all, you need to have wp-cli installed, use Homebrew to install or manually this guide can cover that process.

    brew install wp-cli

    Increase your PHP memory size, especially if you installed PHP with Homebrew – otherwise, a fatal error will occur when installing wp-cli-valet-command package, find your PHP memory limits .ini config file

    php --ini

    nano /usr/local/etc/php/7.3/conf.d/php-memory-limits.ini

    Change limits to 1024M in all 3 places

    Also, make sure your MySQL or mariadb is running…

    brew services start mariadb

    Once you have wp-cli add the wp-cli-valet-command package

    wp package install [email protected]:aaemnnosttv/wp-cli-valet-command.git

    Once this is installed you are ready to create some WordPress sites…

    To install a new site, move into your Sites folder and run a wp valet command

    cd ~/Sites

    wp valet new newsitename

    This will set up https://newsitename.test ready to go WP-Admin defaults are admin/admin for username and password.

    All new sites are by default set up with https – to set one up just as http – run…

    wp valet new newsitename --unsecure

    To remove a site…

    wp valet destroy newsitename

    For more commands and options check out the GitHub repo for wp-cli-valet and also you can create custom sites with a certain theme, plugins, etc by rolling your own bash scripts.

    Toggle SSL

    To toggle between whether or not a site uses an SSL cert..

    valet unsecure mysitename


    valet secure mysitename

    Terminal output

    Restarting nginx...
    The [mysitename.test] site has been secured with a fresh TLS certificate.



    To deal with MySQL via phpmyAdmin – create a new site

    cd ~/Sites

    wp valet new phpmyadmin

    So now you have a https://phpmyadmin.test – remove all the WordPress files and download and move into the folder the latest phpmyadmin files – if your MySQL install is no password then change the config file as prompted to AllowNoPassword. Now all your databases are easily accessible.

    You can take WordPress site installation further with Valet by adding a bash script that includes further refining the install with plugins and themes tailoring – see the next article on Valet, wp-cli and bash scripting.


    mariaDB 10.4 ERROR 1698 (28000): Access denied for user ‘root’@’localhost’

    Since v10.4 mariadb has had some root/password major changes, if you are getting this error  when creating new sites with valet use your macos shortname instead with a db user variable like so…

    wp valet new sitename --dbuser="admin"

    So a new site ‘sitename’ is created with the macOS shortname of the account ‘admin’

    Toggling PHP Versions

    The initial PHP Hombrew downloaded version is 7.3, you can add other PHP versions and set Valet to use a different version…

    valet use [email protected]

    Valet will download PHP7.2 via HomeBrew and use it, you can also use…

    valet use [email protected]

    Using PHP 5.6

    To use PHP 5.6 you need to add an unofficial Homebrew tap as these have been removed from regular Homebrew taps.

    brew tap exolnet/homebrew-deprecated

    Then try Valet

    valet use [email protected]

    If you get a syntax error .composer/vendor/illuminate/support/Collection.php on line 103 – run…

    composer global update

    Using Valet without an admin password

    The default behaviour is for an admin password to be requested for each valet command, this can be surpasses with…

    valet trust

    Which allows both valet and Homebrew commands to be password free.

    Sudoers entries have been added for Brew and Valet.


    Install valet

    Install wp-cli-valet-command

    Install wp-cli

    Install Homebrew

    Older PHP 5.6 & 7

    Không có nhận xét nào