Skip to content
PortBay

Local development

PHP on macOS 26 Tahoe: one click, or the 30-command manual route

Apple removed PHP from macOS years ago; Tahoe just renews the question. The manual Homebrew + nginx route as it really is — about 30 command sequences and six config files — next to the one-click managed alternative, plus the post-upgrade fix sequence.

Nour Beiruti7 min read

macOS 26 Tahoe doesn't include PHP. That's not a Tahoe change — Apple removed PHP from the operating system in Monterey, back in 2021 — but every macOS release sends a fresh wave of developers searching for the current way to get a PHP environment running. In 2026 there are two routes worth your time: assemble the stack yourself with Homebrew and nginx, or use a managed environment app that provisions all of it in one click. Here's both, honestly, plus the upgrade-season checklist for when an existing setup stops working.

What Tahoe actually changes (and what it doesn't)

PHP itself runs fine on Tahoe — Homebrew builds current PHP versions on macOS 26, and the managed apps ship Tahoe-compatible builds. What the upgrade churns is everything around a hand-rolled stack: Xcode Command Line Tools usually need reinstalling after a major macOS upgrade, Homebrew packages may need rebuilding against the new OS, and services that were happily running before the upgrade (php-fpm, nginx, MySQL) don't always come back up by themselves. If your first search after upgrading was “php not working tahoe” — start with xcode-select --install, then brew update && brew upgrade, then brew services restart --all. That sequence resolves the majority of post-upgrade breakage.

The manual route: Homebrew + nginx + PHP-FPM

The guide ranking for this setup (kevdees.com's “Install Nginx & Multiple PHP Versions on macOS 26 Tahoe”) is thorough and correct — and it's a good, unintentional census of what a full PHP environment actually involves. The complete walkthrough runs roughly 25–30 command sequences and has you hand-editing six configuration files: a www.conf per PHP version (each php-fpm instance gets its own port, 9082 through 9085 for PHP 8.2–8.5), php.ini for Xdebug and mail, nginx.conf, dnsmasq.conf for .test domains, MySQL's my.cnf, and /etc/postfix/main.cf to route mail into Mailpit. HTTPS comes from self-signed OpenSSL certificates plus custom shell functions to generate them and to switch PHP versions.

brew install [email protected] nginx mysql dnsmasq mailpit
brew services start [email protected]
brew services start nginx
# … then ~25 more steps: per-version www.conf,
# nginx server blocks, dnsmasq, certs, postfix

Two honest things about this route. First, it works, and you end up understanding every layer of your stack — when something breaks at 2am, that knowledge pays. Second, it's a commitment: the setup is yours to maintain, the version-switching shell functions are yours to debug, and a chunk of it gets revisited at every macOS upgrade. If that trade appeals to you, the manual route is legitimate — our local HTTPS guide covers the mkcert + dnsmasq corner of it in depth, including how to get certificates browsers actually trust instead of self-signed ones.

The one-click route

The alternative is a managed environment app that treats all of the above as its job. PortBay (free, open source, macOS) provisions the same stack the manual guide assembles: PHP versions side by side and pinned per project, a per-project MySQL, MariaDB or PostgreSQL database with credentials wired into your .env, trusted HTTPS on a real .test domain — browser-trusted via a local CA, not self-signed — and built-in mail capture with no postfix editing. Add a project folder, press Play, and https://yourapp.test serves. When macOS 27 arrives, the app updates; there is no list of config files to revisit. Download itand the first project is running before the manual guide's step three.

The honest trade: PortBay is macOS-only (Apple Silicon), and a managed environment means less knob-level control than a hand-written nginx config — if your project needs custom server directives, the manual route keeps the edge. For the wider decision between Homebrew, Docker and managed apps — including where Laravel Herd, Valet and ServBay each fit — the full PHP-on-Mac guide is the long version.

Upgrading to Tahoe with an existing setup

If you're on MAMP, Herd, Valet or ServBay and weighing the Tahoe upgrade: check your tool's compatibility notes first — every macOS release produces a wave of “Apache won't start” threads, and the usual culprits are port conflicts, macOS security prompts re-asking for permissions, and versions released before the OS was. Vendors typically ship Tahoe-compatible updates; install those before blaming the stack. And if the upgrade is the push to consolidate: PortBay reads MAMP's hosts and document roots and Valet's site list on first launch and offers to import them — the switch guide covers it, and the per-tool comparisons (MAMP, Laravel Herd, Valet, ServBay) say plainly when staying put is the better call.

PortBay mascot — a friendly blue tugboat

Run your first local site in one click.

Download for macOS

Free & open source · macOS 11+ on Apple Silicon · Pro from $10/mo