การติดตั้ง 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

TL; DR

Apple ตัดสินใจที่จะลบไฟล์ส่วนหัว/usr/includeและmacOS_SDK_headers_for_macOS_10.14.pkgแพ็คเกจ การติดตั้ง Xdebug คุณจะมีการรวบรวมด้วยตนเอง Xdebug กับการอ้างอิงที่ถูกต้องทั้งในและphpizemake

สำหรับรายละเอียดเพิ่มเติมฉันเขียนบทความบล็อกเกี่ยวกับปัญหาและวิธีแก้ไข


เรื่องสั้นสั้น ๆ Apple ตัดสินใจที่จะเปิดใช้งาน/usr/includeMacOS Catalina ซึ่งเป็นตำแหน่งเริ่มต้นสำหรับไฟล์ส่วนหัว C ตลอดมาในระบบ UNIX พยายามที่จะติดตั้งผ่านลูกแพร์ / 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

... และดำเนินการโดยใช้ตำแหน่ง 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 ไม่สามารถใช้ได้ในการติดตั้งของคุณ ย้อนกลับไปตามขั้นตอนเพื่อดูว่ามีอะไรขาดหายไป


แก้ไข

การแก้ไขที่สมบูรณ์มากขึ้นที่จะแก้ไขผลมาจากการที่ผลตอบแทน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เพื่อหาตำแหน่งและแก้ไขที่ใช้แทน
Dejv

ฉันเป็นคนดีจนกระทั่ง./configureคำสั่ง no such file or directory: ./configureฉันให้ได้รับ มีใครอีกไหมที่วิ่งเข้ามาหรือฉันเป็นแค่ผู้โชคดี? : D
cbloss793

0

หากคุณกำลังใช้ชงฉันแก้ปัญหานี้โดยติดตั้ง php และเชื่อมโยงใหม่:

brew reinstall php@7.3
brew link --overwrite php

ไม่ได้ทำงานนะเพื่อน
Eric Chen

น่าเสียดายที่สิ่งที่ผลิตไม่ได้ผลตามที่คาดหวังขึ้นอยู่กับรุ่นของคุณ
jamespsterling

-1

คุณสามารถดูคำแนะนำโดยละเอียดพร้อมที่จะใช้แพทช์ในเว็บไซต์นี้: https://profilingviewer.com/installing-xdebug-on-catalina.html


1
คำตอบที่อ้างอิงไซต์ภายนอกเป็นหลักควรมีข้อมูลสรุปเพื่อให้กลายเป็นแหล่งข้อมูลหลักรวมถึงการอ้างอิง สิ่งนี้จะช่วยให้คำตอบยืนการทดสอบของเวลา
Louis Charette

-2

ฉันอยากจะแนะนำให้คุณใช้ "ชง" เพื่อติดตั้ง PHP แล้วใช้เครื่องมือ "pecl" ที่มาพร้อมกับ PHP รุ่นที่ติดตั้งเพื่อติดตั้ง Xdebug


นั่นคือสิ่งที่ฉันทำ เมื่อพยายามติดตั้ง Xdebug ด้วย pecl ฉันได้รับข้อผิดพลาดดังกล่าวข้างต้น
Guenter

1
นั่นหมายความว่ามันกำลังรวบรวมเครื่องมือ pecl ที่ไม่ถูกต้องซึ่งเป็นเครื่องมือที่ติดตั้งกับ Mac ของคุณ คุณต้องแน่ใจว่าได้ใช้การชงที่มีให้
Derick

@Genter ให้คำแนะนำว่าแก้ปัญหาของคุณได้หรือไม่ ฉันมีปัญหาเดียวกันและทำbrew install phpแต่ฉันยังคงได้รับข้อผิดพลาดเดียวกัน
Carter Pape

ขอบคุณ @Derick สิ่งนี้แก้ไขปัญหาของฉันได้
Guenter

1
pecl install xdebugทำงานให้ฉันภายใต้ 10.15.3
Juanmi Sosso
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.