Xdebug'un MacOS Catalina 10.15 üzerine kurulması


13

Xdebug'u OS X 10.15'e yüklemeye ve aşağıdaki sorunla karşılaşmaya çalıştım:

/private/tmp/pear/install/xdebug/xdebug.c:25:10: önemli hata: 'php.h' dosyası bulunamadı

Burada anlatıldığı gibi sorunu çözmeye çalıştım: MacOs Mojave'ye xdebug yükleme - 'php.h' dosyası bulunamadı

Maalesef başlık dosyaları bu dizinde bulunamadı: /Library/Developer/CommandLineTools/Packages

OS X 10.15 için geçerli başlık dosyalarını alabileceğim herhangi bir fikir var mı?

Yanıtlar:


28

tl; Dr.

Apple, başlık dosyasını /usr/includeve macOS_SDK_headers_for_macOS_10.14.pkgpaketini kaldırmaya karar verdi . Xdebug'u kurmak için, Xdebug'u hem phpizeve hem de doğru referansla manuel olarak derlemeniz gerekir make.

Daha fazla ayrıntı için, sorun ve çözüm hakkında bir blog makalesi yazdım


Uzun lafın kısası, Apple /usr/include, UNIX sistemlerinde C başlık dosyası için varsayılan konum olan MacOS Catalina'da nuke yapmaya karar verdi . PEAR / PECL aracılığıyla yüklemeye çalışmak, derleyici gerekli başlık dosyasını arayacağından bir hata döndürür /usr/include. Bu nedenle çözüm, Xdebug'u manuel olarak derlemek, hala Xcode tarafından sağlanan başlık dosyalarının gerçek konumunu sadece farklı bir konumda manuel olarak belirtmektir.

İlk olarak, komut satırı araçları da dahil olmak üzere Xcode'un kurulu olduğundan emin olun. Aşağıdaki komut varsayılan SDK'nın konumunu görüntüler:

$ xcrun --show-sdk-path
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk

İstediğiniz başlık ( php.h) daha sonra içeride olacaktır /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main.

Kaynak almak

En derlemek Let 2.7.2 git den kaynak kodunu almak. Alternatif olarak, kaynağı Xdebug sitesinden indirebilirsiniz .

git clone https://github.com/xdebug/xdebug.git
cd xdebug
git checkout tags/2.7.2

phpize

Daha sonra phpize, içerme yolunu düzenleyebilmemiz için bir kopya oluşturmamız gerekiyor :

cp /usr/bin/phpize .
nano ./phpize

Bu satırı bulun:

includedir="`eval echo ${prefix}/include`/php"

... ve bu satırla değiştirin:

includedir="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"

Çalıştır phpize:

./phpize

Şimdi böyle bir şey görmelisiniz:

Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731

Yapılandırma ve oluşturma

Şimdi yapılandırabiliriz:

./configure --enable-xdebug

... derleyici bayrakları olarak tanımlanan özel SDK konumumuzu kullanarak make komutunu çalıştırın:

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'

Biraz uyarı görebilir, şimdilik görmezden gel. Sonunda koşmamız gerekecek:

make install

Yine, bu komut başarısız olur çünkü uzantı doğru yere taşınamaz. SIP bunu engelleyecektir. Ama endişelenmenize gerek yok, bir sonraki adımda elle ilgileneceğiz. * .so dosyasını imzalayacağı için make install hala gereklidir.

PHP'de etkin destek

Sonra, yürütülebilir dosyayı güvenli bir yere taşıyoruz. Ben kullanıyorum /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

Sonra Xdebug'u etkinleştirmek için PHP yapılandırmasını düzenliyoruz. Basitçe düzenleyin php.ini:

sudo nano /etc/php.ini

Ve aşağıya aşağıdakileri ekliyoruz:

[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

Şunlardan emin olmak için yerleşik sunucuyu yeniden başlatın:

sudo apachectl restart

Ve sonunda her şeyin yolunda gittiğini test et:

php -i | grep "xdebug support"

Yukarıdaki komut hiçbir şey döndürmezse, yüklemenizde Xdebug kullanılamaz. Nelerin eksik olduğunu bulmak için adımlara geri dönün.


DÜZENLE

Daha eksiksiz bir düzeltme, sonucu php-config --include-dirdöndürmek olacaktır, bu da döndürür /usr/include/php. Bu, herhangi bir kurulumun dosyaları veya derleyici bayraklarını manuel olarak düzenlemek zorunda kalmadan gerekli başlık dosyalarını bulmasını sağlar.


1
En değerli cevap! Bu doğru olarak işaretlenmelidir! Teşekkürler bayım!
eltomato

SİZ KAYITLI MY GÜN
ludovico

Sorunu çözmenin en iyi yolu budur. Benim için çalıştı. Teşekkürler, Louis
Raja Mohammed

1
PHP 7.4 desteği için XDebug 2.9'u yüklemeniz gerekir (2.7.2 değil). Sadece bu kurulum talimatlarını izleyin ve sonra bumake install yazının "PHP'de etkin destek" bölümünün tüm adımlarını uygulayın. php.iniDosyanızın farklı bir konumda olabileceğini unutmayın . Run php --inianlamaya nerede ve düzenlemek yerine kullanılıyor tane.
Dejv

./configureKomuta kadar iyiydim. Ben almaya devam ediyorum no such file or directory: ./configure. Başka biri bununla karşılaşır mı yoksa ben sadece şanslı mıyım? : D
cbloss793

0

Demlemek kullanıyorsanız, php yeniden yükleyerek ve yeniden bağlayarak bunu çözmek:

brew reinstall php@7.3
brew link --overwrite php

İşe yaramadı dostum.
Eric Chen

Ne yazık ki demlemek şeyler sürümlerinize bağlı olarak beklendiği gibi çalışmıyor.
jamespsterling


-2

Ben PHP yüklemek için "demlemek" ve sonra Xdebug yüklemek için demlemek PHP'nin yüklü sürümü ile birlikte gelen "pecl" aracını kullanmanızı tavsiye ederim.


Ben de öyle yaptım. Xdebug'u pecl ile kurmaya çalışırken yukarıda belirtilen hatayı alıyorum
Guenter

1
Bu, Mac'inizde yüklü olan yanlış pecl aracını aldığı anlamına gelir. Sağlanan demlemeyi kullandığınızdan emin olmanız gerekir.
Derick

@Guenter bu ipucu sorununuzu çözdü mü? Aynı sorunu brew install phpyaşıyorum ve yaptım ama yine de aynı hatayı alıyorum.
Carter Pape

Teşekkürler @Derick, bu sorunumu çözdü
Guenter

1
pecl install xdebugbenim için çalıştı 10.15.3
Juanmi Sosso
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.