Проблема
Основная проблема заключается в том, что Apple удалила /usr/include
в macOS
Catalina, которая была местоположением для любого заголовочного файла C и все еще используется в большинстве систем *NIX
. Попытка установить все, что основано на заголовочных файлах, находящихся в указанном местоположении c, потерпит неудачу. Решение состоит в том, чтобы скомпилировать Xdebug
вручную, указав фактическое расположение файлов заголовков, которые все еще предоставляются Xcode, просто в совершенно другом месте.
Установить Xcode
1) Загрузить Xcode
2) Откройте Xcode , при необходимости согласитесь с условиями, затем закройте.
3) После установки откройте терминал:
$ xcode-select --install
4) Убедитесь, что SDK
найден.
$ xcrun --show-sdk-path
Он должен выглядеть примерно так, как показано ниже; вам может понадобиться соответственно изменить путь позже:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
Вручную скомпилировать Xdebug
На данный момент версия 2.9.4 представляется самой последней, поэтому мы клонируем эту версию компилировать.
$ git clone https://github.com/xdebug/xdebug.git
$ cd xdebug
$ git tag -l
$ git checkout tags/2.9.4
phpize
Далее нам нужно сделать копию phpize
и затем отредактировать путь включения:
$ cp /usr/bin/phpize .
$ nano ./phpize
Найти эту строку ( Control + W ):
includedir="`eval echo ${prefix}/include`/php"
Заменить на эту строку:
includedir="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"
Запустить phpize:
$ ./phpize
Исправить Выходные данные выглядят примерно так:
Configuring for:
PHP Api Version: 20180731
Zend Module Api No: 20180731
Zend Extension Api No: 320180731
Настройка и сборка
$ ./configure --enable-xdebug
После этого выполните make
с расположением SDK, определенным как флаги компилятора. Используйте переменную для хранения пути к SDK, чтобы ее было легче редактировать, если он изменится:
$ SDK_PATH=$(xcrun --show-sdk-path)
$ make CPPFLAGS="-I${SDK_PATH}/usr/include/php -I${SDK_PATH}/usr/include/php/main -I${SDK_PATH}/usr/include/php/TSRM -I${SDK_PATH}/usr/include/php/Zend -I${SDK_PATH}/usr/include/php/ext -I${SDK_PATH}/usr/include/php/ext/date/lib"
Возможно, есть предупреждения - просто пока проигнорируйте их. Наконец, выполните:
$ make install
Эта команда не будет выполнена, поскольку она не может переместить расширение в нужное место; SIP
предотвращает это. На следующем шаге мы позаботимся о его перемещении вручную. make install
все еще требуется, так как он кодирует *.so
файл.
После того, как make install
был запущен (и не работает), мы можем переместить исполняемый файл:
$ sudo mkdir -p /usr/local/php/extensions
$ sudo cp $(php-config --extension-dir)/xdebug.so /usr/local/php/extensions
Теперь отредактируйте PHP конфигурация (php.ini
) для включения Xdebug
:
$ sudo nano /etc/php.ini
Внизу добавьте следующее:
[xdebug]
zend_extension=/usr/local/php/extensions/xdebug.so
xdebug.remote_enable=on
xdebug.remote_log="/var/log/xdebug.log"
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.remote_port=9000
Перезагрузка apache:
$ sudo apachectl restart
Наконец-то протестируйте все прошло хорошо:
$ php -i | grep "xdebug support"
Примечания : Спасибо Луи Шаретту за исследование и решение этой проблемы .
↳ Установка Xdebug на MacOS Catalina 10.15