TL; DR
Apple ตัดสินใจที่จะลบไฟล์ส่วนหัว/usr/include
และmacOS_SDK_headers_for_macOS_10.14.pkg
แพ็คเกจ การติดตั้ง Xdebug คุณจะมีการรวบรวมด้วยตนเอง Xdebug กับการอ้างอิงที่ถูกต้องทั้งในและphpize
make
สำหรับรายละเอียดเพิ่มเติมฉันเขียนบทความบล็อกเกี่ยวกับปัญหาและวิธีแก้ไข
เรื่องสั้นสั้น ๆ Apple ตัดสินใจที่จะเปิดใช้งาน/usr/include
MacOS 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
ซึ่งจะทำให้การติดตั้งค้นหาไฟล์ส่วนหัวที่จำเป็นโดยไม่ต้องแก้ไขไฟล์หรือตั้งค่าสถานะคอมไพเลอร์ด้วยตนเอง