tl; Dr.
Apple, başlık dosyasını /usr/include
ve macOS_SDK_headers_for_macOS_10.14.pkg
paketini kaldırmaya karar verdi . Xdebug'u kurmak için, Xdebug'u hem phpize
ve 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-dir
dö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.