ТЛ; др
Apple решила удалить файл заголовков /usr/include
и macOS_SDK_headers_for_macOS_10.14.pkg
пакет. Чтобы установить Xdebug, вам придется вручную скомпилировать Xdebug с правильной ссылкой в обоих phpize
и make
.
Для более подробной информации, я написал статью в блоге о проблеме и решении
Короче говоря, Apple решила установить ядро /usr/include
в MacOS Catalina, которая всегда была местоположением по умолчанию для заголовочного файла C в системах UNIX. Попытка установки через PEAR / PECL вернет ошибку, так как компилятор будет искать необходимый файл заголовков в /usr/include
. Таким образом, решение состоит в том, чтобы скомпилировать Xdebug вручную, вручную указав фактическое местоположение файлов заголовков, которые все еще предоставляются XCode, просто в другом месте.
Сначала убедитесь, что Xcode установлен, включая инструменты командной строки. Следующая команда отобразит расположение SDK по умолчанию:
$ xcrun --show-sdk-path
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
Заголовок, который вы хотите ( php.h
), будет в /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main
.
Получение источника
Давайте скомпилируем 2.7.2 , получив исходный код из git. Кроме того, вы можете скачать исходный код с сайта Xdebug .
git clone https://github.com/xdebug/xdebug.git
cd xdebug
git checkout tags/2.7.2
phpize
Далее нам нужно сделать копию, phpize
чтобы мы могли редактировать путь включения:
cp /usr/bin/phpize .
nano ./phpize
Найдите эту строку:
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, определенное как флаги компилятора:
make CPPFLAGS='-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/TSRM -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/Zend -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/ext -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/ext/date/lib'
Может быть, увидим какое-то предупреждение, просто проигнорируйте его. Наконец, нам нужно запустить:
make install
Опять же, эта команда не будет выполнена, потому что она не может переместить расширение в нужное место. SIP предотвратит это. Но не беспокойтесь, мы позаботимся об этом вручную на следующем этапе. make install по-прежнему требуется, поскольку он подпишет файл * .so.
Включена поддержка в PHP
Затем мы перемещаем исполняемый файл в безопасное место. Я использую /usr/local/php/extensions
.
sudo mkdir -p /usr/local/php/extensions
sudo cp /usr/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so /usr/local/php/extensions
Затем мы редактируем конфигурацию PHP, чтобы включить Xdebug. Просто отредактируйте php.ini
:
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
Перезапустите встроенный сервер, чтобы убедиться:
sudo apachectl restart
И наконец, тестирование, все прошло нормально:
php -i | grep "xdebug support"
Если приведенная выше команда ничего не возвращает, Xdebug недоступен при вашей установке. Вернитесь по ступенькам, чтобы узнать, чего не хватает.
РЕДАКТИРОВАТЬ
Более полное исправление было бы отредактировать результат php-config --include-dir
, который возвращает /usr/include/php
. Это позволит любой установке найти необходимые заголовочные файлы без необходимости вручную редактировать файлы или флаги компилятора.
make install
выполните все шаги главы «Включенная поддержка в PHP» этого поста. Имейте в виду, что у вас может бытьphp.ini
файл в другом месте. Запустите,php --ini
чтобы выяснить, где и отредактируйте тот, который используется вместо этого../configure
команды. Я продолжаю получатьno such file or directory: ./configure
. Кто-нибудь еще сталкивался с этим или я просто счастливчик? : DЕсли вы используете brew, я решаю это путем переустановки php и повторной ссылки:
источник
Вы можете найти подробные инструкции с готовыми к использованию патчами на этом сайте: https://profilingviewer.com/install-xdebug-on-catalina.html
источник
Я бы порекомендовал вам использовать «brew» для установки PHP, а затем использовать инструмент «pecl», который поставляется с установленной версией brew PHP для установки Xdebug.
источник
brew install php
но я все еще получаю ту же ошибку.pecl install xdebug
работал для меня до 10.15.3