Instalasi Xdebug pada MacOS Catalina 10.15

13

Saya mencoba menginstal Xdebug pada OS X 10.15 dan mengalami masalah berikut:

/private/tmp/pear/install/xdebug/xdebug.c:25:10: kesalahan fatal: file 'php.h' tidak ditemukan

Saya mencoba untuk memperbaiki masalah seperti dijelaskan di sini: Menginstal xdebug di MacOs Mojave - file 'php.h' tidak ditemukan

Sayangnya file header tidak dapat ditemukan di direktori ini: /Library/Developer/CommandLineTools/Packages

Adakah ide di mana saya bisa mendapatkan file header saat ini untuk OS X 10.15?

Guenter
sumber

Jawaban:

28

tl; dr

Apple memutuskan untuk menghapus file header /usr/includedan macOS_SDK_headers_for_macOS_10.14.pkgpaket. Untuk menginstal Xdebug, Anda harus secara manual mengkompilasi Xdebug dengan referensi yang benar di keduanya phpizedan make.

Untuk lebih jelasnya, saya menulis artikel blog tentang masalah dan solusinya


Singkat cerita, Apple memutuskan untuk nuke /usr/includedi MacOS Catalina, yang telah menjadi lokasi default untuk file header C selama-lamanya dalam sistem UNIX. Mencoba menginstal melalui PEAR / PECL akan menghasilkan kesalahan karena kompiler akan mencari file header yang diperlukan /usr/include. Jadi solusinya adalah mengkompilasi Xdebug secara manual, secara manual menentukan lokasi sebenarnya dari file header, yang masih disediakan oleh Xcode, hanya di lokasi yang berbeda.

Pertama, pastikan Xcode diinstal, termasuk alat-alat baris perintah. Perintah berikut akan menampilkan lokasi SDK default:

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

Header yang Anda inginkan ( php.h) akan berada di /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main.

Mendapatkan sumber

Mari kita mengkompilasi 2.7.2 , mendapatkan kode sumber dari git. Atau, Anda dapat mengunduh sumber dari situs Xdebug .

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

phpize

Selanjutnya kita perlu membuat salinan phpizesehingga kita dapat mengedit jalur sertakan:

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

Temukan baris ini:

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

... dan ganti dengan baris ini:

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

Jalankan phpize:

./phpize

Anda sekarang akan melihat sesuatu seperti ini:

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

Konfigurasikan & bangun

Kami sekarang dapat mengkonfigurasi:

./configure --enable-xdebug

... dan jalankan make menggunakan lokasi SDK khusus kami yang didefinisikan sebagai flag kompilator:

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'

Mungkin melihat beberapa peringatan, abaikan saja untuk sekarang. Akhirnya, kita harus menjalankan:

make install

Sekali lagi, perintah ini akan gagal karena tidak dapat memindahkan ekstensi ke tempat yang tepat. SIP akan mencegahnya. Tapi jangan khawatir, kami akan membereskannya secara manual di langkah berikutnya. make install masih diperlukan karena akan menandatangani file * .so

Dukungan yang diaktifkan di PHP

Selanjutnya, kita pindahkan executable ke tempat yang aman. Saya menggunakan /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

Kemudian kami mengedit konfigurasi PHP untuk mengaktifkan Xdebug. Cukup edit php.ini:

sudo nano /etc/php.ini

Dan kami menambahkan yang berikut di bagian bawah:

[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

Mulai ulang server bawaan untuk memastikan:

sudo apachectl restart

Dan akhirnya menguji semuanya berjalan dengan baik:

php -i | grep "xdebug support"

Jika perintah di atas tidak mengembalikan apa pun, maka Xdebug tidak tersedia pada instalasi Anda. Kembali ke langkah-langkah untuk mencari tahu apa yang hilang.


EDIT

Perbaikan yang lebih lengkap adalah mengedit hasil php-config --include-dir, yang mengembalikan /usr/include/php. Itu akan membuat setiap instalasi menemukan file header yang diperlukan tanpa harus mengedit file atau flag compiler secara manual.

Louis Charette
sumber
1
Jawaban paling berharga! Ini harus ditandai sebagai benar! Terima kasih Pak!
eltomato
ANDA MENYELAMATKAN HARI SAYA
ludovico
Ini adalah cara terbaik untuk menyelesaikan masalah. Ini berhasil untuk saya. Terima kasih, Louis
Raja Mohammed
1
Untuk dukungan PHP 7.4, Anda perlu menginstal XDebug 2.9 (bukan 2.7.2). Cukup ikuti instruksi instalasi ini dan setelah make installmelakukan semua langkah bab "Diaktifkan dukungan dalam PHP" dari posting ini. Ingatlah bahwa Anda mungkin memiliki php.inifile di lokasi berbeda. Jalankan php --iniuntuk mencari tahu di mana dan edit yang sedang digunakan.
Dejv
Saya baik sampai ./configureperintah. Saya terus mendapatkan no such file or directory: ./configure. Adakah orang lain yang mengalami hal ini atau hanya saya yang beruntung? : D
cbloss793
0

Jika Anda menggunakan minuman, saya menyelesaikan ini dengan menginstal ulang php dan menautkan kembali:

brew reinstall php@7.3
brew link --overwrite php
jamespsterling
sumber
Tidak berhasil, kawan.
Eric Chen
Sayangnya, hal-hal yang diseduh tidak berjalan seperti yang diharapkan, tergantung pada versi Anda.
jamespsterling
-1

Anda dapat menemukan petunjuk terperinci dengan tambalan siap pakai di situs ini: https://profilingviewer.com/installing-xdebug-on-catalina.html

pengguna24525
sumber
1
Jawaban yang terutama merujuk situs eksternal harus mencakup ringkasan informasi sehingga menjadi sumber utama dan juga referensi. Ini akan membantu jawaban untuk bertahan dalam ujian waktu.
Louis Charette
-2

Saya akan merekomendasikan Anda menggunakan "brew" untuk menginstal PHP, dan kemudian menggunakan "pecl" alat yang datang dengan versi yang sudah diinstal dari brew's PHP untuk menginstal Xdebug.

Derick
sumber
Itulah yang saya lakukan. Ketika mencoba menginstal Xdebug dengan pecl saya mendapatkan kesalahan yang disebutkan di atas
Guenter
1
Itu berarti mengambil alat pecl yang salah - yang diinstal dengan Mac Anda. Anda harus memastikan untuk menggunakan minuman yang disediakan.
Derick
@ Guenter apakah petunjuk itu menyelesaikan masalah Anda? Saya mengalami masalah yang sama dan melakukan brew install phptetapi saya masih mendapatkan kesalahan yang sama.
Carter Pape
Terima kasih @Derick, ini memecahkan masalah saya
Guenter
1
pecl install xdebugbekerja untuk saya di bawah 10.15.3
Sosso