Where apps hide your files
Herd serves ~/Herd and keeps its nginx, PHP and logs in ~/Library/Application Support/Herd, while Valet keeps its config in ~/.config/valet. Here is what is in each folder and how to tell which tool is serving a site.
Laravel Herd serves sites from "parked" folders and "linked" projects. Its own docs say Herd parks ~/Herd by default, so anything in that folder is served at <folder-name>.test:
~/Herd
Herd's settings are in one folder under Application Support:
~/Library/Application Support/Herd
Herd's "Directories and Files" page describes what is in it:
Path under ~/Library/Application Support/Herd | What it holds |
|---|---|
bin | Herd's binaries, including composer and downloaded PHP versions |
config | Config for every Herd service (the general settings can open it, as "Configuration Files") |
config/herd.json | Settings shared by the app and the CLI |
config/nginx | nginx.conf and herd.conf |
config/valet/Nginx | Site-specific nginx files, named after the site domain |
config/valet/workspaces.json | Herd's list of workspaces |
config/php/<version>/php.ini | One php.ini per PHP version |
config/error_pages | The pages Herd shows when PHP-FPM does not answer |
Log | nginx and php-fpm logs (mail logs too in Herd Pro) |
The docs say a site gets its own nginx file when you isolate its PHP version or secure it with TLS, and that you can edit it. A "Bad Gateway" error can point to a mistake in nginx.conf or herd.conf.
A parked path serves every project inside it. A linked directory serves one project from anywhere. From Terminal, Herd's docs give:
cd ~/Code/your-project
herd link
That serves the project at your-project.test, and herd link custom-domain picks the name. herd unlink reverses it. To add a parked folder, use Herd's general settings, as its docs describe. The Applications window lists both kinds and its inspector shows each site's PHP version and HTTPS setting.
Take care with the button at the bottom of the inspector: Herd's docs say that for a parked application it deletes the site and moves its folder to the Trash, while for a linked one it only unlinks and keeps the files.
Each PHP version has its own file at ~/Library/Application Support/Herd/config/php/<version>/php.ini, and herd ini opens it, per Herd's PHP settings page. For upload size and memory limit, Herd's docs prefer its settings window to hand-edited files. If you change a site's PHP version, herd isolate 8.3 (or another version) creates the site's own nginx file.
Herd Pro services such as MySQL keep their data in their own folders. Herd's MySQL page says you can right-click the service in settings and open its data directory, which contains the my.cnf that instance loads. Use that menu rather than guessing a path.
Laravel Valet is the command-line tool that came before Herd. It runs nginx, PHP and DnsMasq from Homebrew and uses the same park and link idea. It keeps its settings in a hidden folder in your home directory:
~/.config/valet
Laravel's Valet documentation lists what is in it:
| Path | What it holds |
|---|---|
~/.config/valet/config.json | Valet's master configuration file |
~/.config/valet/Nginx | Nginx site configs, rebuilt by install and secure |
~/.config/valet/Sites | Symbolic links for linked projects |
~/.config/valet/Drivers | Custom and sample drivers |
~/.config/valet/dnsmasq.d | DnsMasq config |
~/.config/valet/Log | fpm-php.www.log and nginx-error.log |
~/.config/valet/valet.sock | The PHP-FPM socket, present only while PHP is running |
Valet's docs say to maintain a backup of ~/.config/valet. To see which folders you parked, run valet paths, which Valet's docs describe as listing your parked paths, and valet links lists linked sites.
PHP and nginx come from Homebrew. Valet's page lists /usr/local/etc/php/X.X/conf.d for PHP .ini files and /usr/local/var/log/nginx for nginx logs. Those are the Intel Homebrew locations; on an Apple silicon Mac Homebrew's prefix is /opt/homebrew, so look under /opt/homebrew/etc/php and /opt/homebrew/var/log/nginx instead, and confirm with ls.
macOS restricts Desktop, Documents and Downloads. Valet's docs recommend keeping site folders outside them, or giving nginx Full Disk Access, and warn that otherwise nginx can fail in unpredictable ways, especially with static files. Herd's docs use ~/Herd and ~/Code in their examples, both outside the protected folders.
Copy the file first (for example cp php.ini php.ini.backup in the same folder), make one change, then restart the site or the tool so it loads the change, and open the site to check it. If something breaks, copy the backup over the edited file and restart again. Herd's docs say the whole Herd folder can be deleted to reinstall from scratch, but that also removes your PHP versions and settings, so treat it as a last resort.
Both bind port 80 for .test domains, and Valet's installation notes say no other program should already be using it. Herd's installation guide says that on first launch Herd detects Valet, migrates its sites, certificates and settings, and asks you to stop Valet if it is running. It leaves Valet's own files untouched, so to go back you quit Herd and run valet start. If one tool seems to ignore your changes, check which is running before editing its files.
Type a site's domain, such as my-project.test, into Everywhere: when a site has its own nginx file (Herd writes one when you isolate or secure a site, Valet when you secure it), both tools name that file after the domain, so the folder column shows whether it came from Herd's config/valet/Nginx or Valet's ~/.config/valet/Nginx. Application Support, the hidden .config folder and ~/Herd are part of its normal scan; projects kept in Documents appear once it has Full Disk Access. It matches file names only, so it will not show you the lines inside a config.
In ~/Library/Application Support/Herd/config, with nginx files in config/nginx and one php.ini per version in config/php/<version>. Herd's settings can open it for you.
~/Herd. Herd's docs say it parks that folder by default, so each project inside is served at <folder-name>.test.
In ~/.config/valet, which holds config.json, the Nginx, Sites, Drivers and Log folders. Laravel's docs advise keeping a backup of it.
Each PHP version has its own at ~/Library/Application Support/Herd/config/php/<version>/php.ini, and the herd ini command opens it.
Everywhere keeps track of every file on your Mac — including the folders Spotlight hides and drives you have unplugged. Free for a day, then $19 once.
Version 2.20.3 · macOS 13+ · 4.7 MB · notarised