With a new work computer (my four-year anniversary gift from Automattic – come work with us!), I’ve been lazy lately, falling into old
error_log() habits since I didn’t have Xdebug set up yet. I also upgraded to High Sierra yesterday, so I thought this would be as good a time as ever to get Xdebug going again properly.
High Sierra comes with PHP 7.1 pre-installed:
and, it turns out, an Xdebug extension is ready to be activated from
/usr/lib/php/extensions/no-debug-non-zts-20160303/. However, upon adding it to a new
php.ini, I hit this problem:
It seems the included XDebug module is somehow invalid, inaccessible, or incompatible. So, I backed out my changes to
php -i and used the XDebug installation wizard to see what it would suggest.
which phpize let me know that I had it, so I started following the instructions to compile a new Xdebug extension. My first issue seemed to be a missing
autoconf, so I installed that with
brew install autoconf. That still left me with this output:
Hm, no good. Following the FAQ implied I had bigger problems with missing PEAR and PECL binaries, and quick searches to see what was involved to get them going were not encouraging. So I tried a different tack, searching on the missing files from the
grep output, and hit on this Stack Overflow article. Running
xcode-select --install got me back on track with the expected
make left me with a fresh
xdebug.so extension to work with.
I started going about adding my extension to the same location as the pre-installed one, but ran into what seemed like odd permission problems that
sudo couldn’t fix:
I went back to the SO article where someone had succeeded, and noticed this line: “However macOS System Integrity Protection (SIP) will prevent you from overwriting the xdebug.so under /usr/lib/php/extensions/.” So instead, I created a new directory elsewhere, hooked it all up again in
php.ini, and finally got the confirmation I was wanting:
Now to see how I like VS Code debugging compared to
vdebug (after a few quick minutes, I think I’ll like it a lot).
4 thoughts on “Installing Xdebug on macOS High Sierra”
Thanks for your post. I also ran into these exact issues after upgrading to High Sierra. And if it was not for your post, I would have given up on solving this frustrating issue. This is the reason I don’t like to upgrade my dev environment, since it breaks so many things for which there is no straight forward solution. Though you would expect that Apple would the dev tools gracefully, not just throw in non-working pieces.
+1 Thanks a lot
/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug is not writeable even with sudo.
Only System has the right to write it
I went back to the SO article where someone had succeeded, and noticed this line: “However macOS System Integrity Protection (SIP) will prevent you from overwriting the xdebug.so under /usr/lib/php/extensions/.” So instead, I created a new directory elsewhere, hooked it all up again in php.ini, and finally got the confirmation I was wanting:
The author already mentions that macOS’s System Integrity Protection will prevent you from writing into /usr/lib/php/extensions. He made a new directory /usr/local/lib/php/extensions and copied it there instead.