Встановлення Xdebug на MacOS Catalina 10.15


13

Я спробував встановити Xdebug на OS X 10.15 і зіткнувся з наступною проблемою:

/private/tmp/pear/install/xdebug/xdebug.c:25:10: фатальна помилка: файл 'php.h' не знайдено

Я намагався виправити проблему, як описано тут: Встановлення xdebug на MacOs Mojave - файл 'php.h' не знайдено

На жаль, файли заголовків у цьому каталозі неможливо знайти: /Library/Developer/CommandLineTools/Packages

Будь-які ідеї, де я можу отримати поточні файли заголовків для OS X 10.15?

Відповіді:


28

тл; д-р

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 запобіжить це. Але не хвилюйтесь, ми подбаємо про це вручну на наступному кроці. зробити встановлення все ще потрібно, оскільки він підпише файл * .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 недоступний при встановленні. Поверніться назад, щоб дізнатися, чого не вистачає.


EDIT

Більш повним виправленням буде редагування результату php-config --include-dir, який повертається /usr/include/php. Це дозволило б будь-якій установці знайти необхідні файли заголовків без необхідності вручну редагувати файли або прапорці компілятора.


1
Найцінніша відповідь! Це слід позначити як правильне! Дякую вам сер!
eltomato

ВИ ЗЕБАЛИ МОЙ ДЕНЬ
ludovico

Це найкращий спосіб вирішити проблему. Це працювало для мене. Спасибі, Луї
Раджа Мухаммед

1
Для підтримки PHP 7.4 вам потрібно встановити XDebug 2.9 (не 2.7.2). Просто дотримуйтесь цих інструкцій із встановлення та make installвиконайте всі кроки розділу "Увімкнено підтримку в PHP" цієї публікації. Майте на увазі, що php.iniфайл у вас може бути в іншому місці. Запустіть, php --iniщоб визначити, де і відредагуйте те, що використовується замість цього.
Дев

Я був добрий до ./configureнаказу. Я продовжую отримувати no such file or directory: ./configure. Хтось ще натрапив на це чи я просто щасливчик? : D
cbloss793

0

Якщо ви використовуєте brew, я вирішую це шляхом перевстановлення php і повторного посилання:

brew reinstall php@7.3
brew link --overwrite php

Не вийшло, чувак.
Ерік Чен

На жаль, вироби з варіння не завжди працюють як слід, залежно від версій.
jamespsterling

-1

Ви можете знайти докладні інструкції з готовими до використання патчами на цьому веб-сайті: https://profilingviewer.com/installing-xdebug-on-catalina.html


1
Відповіді, які в першу чергу посилаються на зовнішній сайт, повинні містити підсумок інформації, щоб вона стала основним джерелом, а також посиланням. Це допоможе відповіді витримати перевірку часом.
Луї Шаретт

-2

Я рекомендую вам використовувати "варити" для встановлення PHP, а потім використовувати інструмент "pecl", який постачається із встановленою версією PHP brew, щоб встановити Xdebug.


Саме це я і зробив. При спробі встановити Xdebug з pecl я отримую згадану вище помилку
Guenter

1
Це означає, що він підбирає неправильний інструмент pecl - той, що встановлений на вашому Mac. Потрібно переконатися в застосуванні наданої заварки.
Дерик

@Guenter це натяк вирішив вашу проблему? У мене виникають ті самі проблеми, brew install phpале я все ще отримую ту саму помилку.
Картер Папе

Дякую @Derick, це вирішило мою проблему
Гюнтер

1
pecl install xdebugпрацював для мене під 10.15.3
Хуанмі Соссо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.