MacOS कैटालिना 10.15 पर Xdebug की स्थापना


13

मैंने OS X 10.15 पर Xdebug स्थापित करने और निम्नलिखित समस्या में चलाने का प्रयास किया:

/pStreet/tmp/pear/install/xdebug/xdebug.c:25:10: घातक त्रुटि: 'php.h' फ़ाइल नहीं मिली

मैंने यहां बताई गई समस्या को ठीक करने का प्रयास किया: मैकडो मोजवे पर xdebug स्थापित करना - 'php.h' फ़ाइल मिली

दुर्भाग्य से हेडर फाइलें इस निर्देशिका में नहीं मिल सकती हैं: /Library/Developer/CommandLineTools/Packages

कोई भी विचार जहां मुझे OS X 10.15 के लिए वर्तमान हेडर फाइलें मिल सकती हैं?

जवाबों:


28

tl; डॉ

Apple ने हेडर फ़ाइल को /usr/includeऔर macOS_SDK_headers_for_macOS_10.14.pkgपैकेज में निकालने का फैसला किया । Xdebug स्थापित करने के लिए, आपको Xdebug को मैन्युअल रूप से संकलित करना होगा phpizeऔर दोनों में सही संदर्भ के साथ make

अधिक जानकारी के लिए, मैंने इस मुद्दे और समाधान के बारे में एक ब्लॉग लेख लिखा


लंबी कहानी छोटी, Apple ने /usr/includeMacOS 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। मैन्युअल रूप से फ़ाइलों या संकलक झंडे को संपादित किए बिना किसी भी स्थापना को आवश्यक हेडर फ़ाइलों को ढूंढना होगा।


1
सबसे मूल्यवान उत्तर! इसे सही के रूप में चिह्नित किया जाना चाहिए! धन्यवाद महोदय!
इलाटोमेटो

आपने मेरा दिन तय किया
ludovico

यह समस्या को हल करने का सबसे अच्छा तरीका है। इसने मेरे लिए काम किया। धन्यवाद, लुई
राजा मोहम्मद

1
PHP 7.4 समर्थन के लिए, आपको XDebug 2.9 (2.7.2 नहीं) स्थापित करने की आवश्यकता है। बस इन इंस्टॉलेशन निर्देशों का पालन करें और make installइस पोस्ट के "PHP में सक्षम समर्थन" अध्याय के सभी चरणों को करने के बाद। ध्यान रखें कि आपके पास php.iniअलग-अलग स्थान पर फ़ाइल हो सकती है । भागो php --iniयह पता लगाने की जहां और संपादित एक है.इसके बजाय उपयोग किया जा रहा।
देजव

मैं ./configureकमांड तक अच्छा था । मैं मिलता रहा no such file or directory: ./configure। किसी और को इस में भाग या मैं सिर्फ भाग्यशाली हूँ? : D
cbloss793

0

यदि आप काढ़ा का उपयोग कर रहे हैं, तो मैं इसे php और री-लिंकिंग को फिर से जोड़कर हल करता हूं:

brew reinstall php@7.3
brew link --overwrite php

काम नहीं किया, यार।
एरिक चेन

दुर्भाग्य से काढ़ा सामान आपके संस्करणों के आधार पर, उम्मीद के मुताबिक काम नहीं करता है।
jamespsterling

-1

आप इस साइट पर पैच का उपयोग करने के लिए तैयार के साथ विस्तृत निर्देश पा सकते हैं: https://profilingviewer.com/installing-xdebug-on-catalina.html


1
मुख्य रूप से बाहरी साइट का संदर्भ देने वाले उत्तरों में जानकारी का सारांश शामिल होना चाहिए ताकि यह एक प्राथमिक स्रोत के साथ-साथ एक संदर्भ भी बन जाए। यह समय की कसौटी पर खड़ा होने में उत्तर की मदद करेगा।
लुई चारेटे

-2

मैं आपको PHP को स्थापित करने के लिए "काढ़ा" का उपयोग करने की सलाह दूंगा, और फिर "पेबल" टूल का उपयोग करूंगा जो कि Xdebug को स्थापित करने के लिए brew के PHP के स्थापित संस्करण के साथ आता है।


ठीक यही मैंने किया। जब मैं Xdebug को pecl के साथ स्थापित करने की कोशिश कर रहा हूं तो मुझे ऊपर उल्लिखित त्रुटि मिलती है
Guenter

1
इसका मतलब है कि यह गलत pecl टूल उठा रहा है - आपके मैक के साथ इंस्टॉल किया गया। आपको प्रदान किए गए काढ़ा का उपयोग करना सुनिश्चित करना होगा।
डेरिक

@ गुरु ने उस संकेत से आपकी समस्या का समाधान किया? मुझे वही परेशानी हो रही है और किया है brew install phpलेकिन अभी भी वही त्रुटि हो रही है।
कार्टर पपी

धन्यवाद @ डरिक, इसने मेरी प्रोब को हल कर दिया
Guenter

1
pecl install xdebugमेरे लिए 10.15.3 के तहत काम किया
जुआनमी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.