tl; डॉ
Apple ने हेडर फ़ाइल को /usr/include
और macOS_SDK_headers_for_macOS_10.14.pkg
पैकेज में निकालने का फैसला किया । Xdebug स्थापित करने के लिए, आपको Xdebug को मैन्युअल रूप से संकलित करना होगा phpize
और दोनों में सही संदर्भ के साथ make
।
अधिक जानकारी के लिए, मैंने इस मुद्दे और समाधान के बारे में एक ब्लॉग लेख लिखा
लंबी कहानी छोटी, Apple ने /usr/include
MacOS Catalina में Nuke का फैसला किया , जो कि UNIX सिस्टम में C हेडर फ़ाइल के लिए डिफ़ॉल्ट स्थान है। PEAR / 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
।
स्रोत प्राप्त करना
Git से सोर्स कोड प्राप्त करते हुए, 2.7.2 संकलन करें । वैकल्पिक रूप से, आप स्रोत को 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
... और संकलक झंडे के रूप में परिभाषित हमारे कस्टम एसडीके स्थान का उपयोग करके बनाते हैं:
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
दोबारा, यह आदेश विफल हो जाएगा क्योंकि यह एक्सटेंशन को सही स्थान पर स्थानांतरित नहीं कर सकता है। एसआईपी इसे रोकेगा। लेकिन कोई चिंता नहीं, हम अगले कदम पर मैन्युअल रूप से इसका ध्यान रखेंगे। मेक इनस्टॉल करना आवश्यक है क्योंकि यह * .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
फिर हम Xdebug को सक्षम करने के लिए PHP कॉन्फ़िगरेशन को संपादित करते हैं। बस संपादित करें 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
। मैन्युअल रूप से फ़ाइलों या संकलक झंडे को संपादित किए बिना किसी भी स्थापना को आवश्यक हेडर फ़ाइलों को ढूंढना होगा।