If you’re using Laravel Herd on macOS Monterey (12.x), especially on an Intel Mac, and updated to PHP 8.4, you’ve probably run into this error:
dyld: Symbol not found: (__ZNSt3__122__libcpp_verbose_abortEPKcz)
Referenced from: '/Users/macbook/Library/Application Support/Herd/bin/php84'
Expected in: '/usr/lib/libc++.1.dylib'
zsh: abort php artisan serve --host localhost --port 8001
I updated Herd’s PHP to the latest release, and Laravel refused to run anything because PHP immediately crashed. Even php -v threw the same dyld error.
After digging through GitHub issues and experimenting, I finally got it working. Here’s exactly what solved it for me.
Original issue where this was discussed:
See the original issue where this was discussed
What’s Actually Happening
In short:
Herd’s recent PHP 8.3/8.4 binaries are built against a newer C++ standard than what macOS Monterey’s libc++ provides.
Lightroom-level errors like this aren’t framework issues — they’re runtime symbol mismatches between the binary and your OS.
Monterey (12.x) simply doesn’t have the required symbols in /usr/lib/libc++.1.dylib, so PHP crashes on start.
What Finally Worked for Me
Step 1 — Download a Compatible Herd PHP Build
I used the Herd-provided PHP 8.4.15 x86 binaries, which are known to work on macOS Monterey:
https://download.herdphp.com/8.4/8.4.15/php84-x86
https://download.herdphp.com/8.4/8.4.15/php84-x86
These are the exact files I replaced in my Herd installation.
Step 2 — Move Them Into Herd’s Bin Folder
Replace the broken Herd binaries with these:
mv ~/Downloads/php84-x86 ~/Library/Application\ Support/Herd/bin/php84
mv ~/Downloads/php84-fpm-x86 ~/Library/Application\ Support/Herd/bin/php84-fpm
At this point, Herd still showed PHP 8.4.16 in the UI — but the CLI told a different story once we fixed permissions.
Step 3 — Fix Permissions Properly
This part is subtle — if you just do chmod +x, it might still fail quietly. What worked for me was:
cd ~/Library/Application\ Support/Herd/bin
chmod 755 php84 php84-fpm
That actually gave the binaries the correct execution rights.
Step 4 — Verify It’s Working
Now when I ran:
php -v
I got:
PHP 8.4.15 (cli) (built: Nov 21 2025 02:39:21) (NTS clang 15.0.0)
Copyright (c) The PHP Group
Built by Laravel Herd
Zend Engine v4.4.15
No dyld errors. Laravel runs. FPM starts. My apps serve just fine.
A Few Notes From My Experience
Herd’s UI version number may not immediately update, but don’t worry — the CLI version is what matters.
You might need to restart Herd services if you were hitting 502 errors before.
This same pattern works for older versions too (PHP 8.3 / 8.2). The binaries mentioned in the GitHub thread include links for them as well.
Here are the reference links from the thread:
PHP 8.3.28 (x86 + FPM)
https://download.herdphp.com/8.3/8.3.28/php83-x86
https://download.herdphp.com/8.3/8.3.28/php83-fpm-x86
PHP 8.2.29 (x86 + FPM)
https://download.herdphp.com/8.2/8.2.29/php82-x86
https://download.herdphp.com/8.2/8.2.29/php82-fpm-x86
Top comments (0)