DEV Community

Timothy Adeleke
Timothy Adeleke

Posted on

How I Fixed the dyld: Symbol not found Error After Updating PHP 8.4 in Laravel Herd (macOS Monterey)

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

That actually gave the binaries the correct execution rights.

Step 4 — Verify It’s Working

Now when I ran:

php -v
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Top comments (0)