Troubleshooting
When something isn’t working, start here.
Run the health check
Section titled “Run the health check”butler doctordoctor inspects your setup end to end and reports what needs attention. The
menu bar app shows the same checks in its
Diagnostics section. Most issues below are things doctor will flag directly.
Sites won’t load at all
Section titled “Sites won’t load at all”If no .test site loads:
- Check Login Items. macOS won’t let Butler bind ports 80 and 443 until you allow it in System Settings → General → Login Items & Extensions. This is the single most common cause after a fresh install. Turn Butler on there.
- Confirm the services are running.
butler statusshould show the daemon and router as running. If not,butler system installre-registers them. - Reboot once after first setup if the privileged port binder hasn’t started — it comes up at login once you’ve allowed Butler.
A specific site doesn’t work
Section titled “A specific site doesn’t work”- Is it linked?
butler sitesshould list it. If not,butler linkit from the project folder. - Wrong PHP version? Check the version shown in
butler sites. Pin the right one withbutler isolate <name> <version>or inbutler.yml. - Wrong web root? Set
publicPathinbutler.ymlif the app serves from a subdirectory. - Read its logs.
butler log <name>(or the app’s Logs section) shows what the web server and PHP are actually doing.
HTTPS shows a warning
Section titled “HTTPS shows a warning”If https://your-app.test warns about the certificate:
- Re-run trust.
butler trustreinstalls Butler’s CA into the keychain. On a CLI-only install, run it undersudoin a terminal. - Re-secure the site.
butler unsecure <name>thenbutler secure <name>re-issues the leaf certificate. - Restart the browser. Browsers cache certificate state; a full restart picks up a newly-trusted CA.
See HTTPS & trusted certs for the full picture.
A service won’t start
Section titled “A service won’t start”- Check its log.
butler log <name>usually shows the reason (a port already in use, a data directory issue, and so on). - Restart it.
butler restart <name>. - Reinstall the component if the binary looks broken:
butler component remove <name>thenbutler install <name>.
Start over cleanly
Section titled “Start over cleanly”To stop everything without losing anything:
butler shutdownTo remove Butler’s background jobs (keeping your state) or wipe it completely:
butler system uninstall # remove background jobsbutler system uninstall --force # also wipe state and downloadsStill stuck?
Section titled “Still stuck?”Gather the output of butler doctor and the relevant butler log <name>, then
open an issue on GitHub. Those two together
tell the maintainers almost everything they need.