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?

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.


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

Tidak berhasil, kawan.
Eric Chen

Sayangnya, hal-hal yang diseduh tidak berjalan seperti yang diharapkan, tergantung pada versi Anda.
jamespsterling


-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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.