संगीतकार चलाते समय xdebug अक्षम करना


98

दौड़ते समय composer diagnose, मुझे निम्न त्रुटि मिलती है:

Xdebug एक्सटेंशन को लोड किया गया है, इससे कम्पोज़र को थोड़ा धीमा किया जा सकता है। संगीतकार का उपयोग करते समय इसे अक्षम करना अनुशंसित है।

जब मैं कम्पोज़र चला रहा हूँ तो मैं xdebug को कैसे निष्क्रिय कर सकता हूँ?

जवाबों:


81

अद्यतन : मुद्दा 1.3 में तय किया गया है । composer self-updateनिम्नलिखित वर्कअराउंड की कोशिश करने के बजाय, निष्पादित करके नवीनतम संस्करण में संगीतकार को अपडेट करें ।


यहाँ @ ezzatron के कोड का मेरा संशोधन है। मैंने phpinfo आउटपुट से आईएनआई फाइलों का पता लगाने के लिए स्क्रिप्ट को अपडेट किया है।

#!/bin/sh

php_no_xdebug () {
    temporaryPath="$(mktemp -t php.XXXX).ini"

    # Using awk to ensure that files ending without newlines do not lead to configuration error
    php -i | grep "\.ini" | grep -o -e '\(/[a-z0-9._-]\+\)\+\.ini' | grep -v xdebug | xargs awk 'FNR==1{print ""}1' | grep -v xdebug > "$temporaryPath"

    php -n -c "$temporaryPath" "$@"
    rm -f "$temporaryPath"
}

php_no_xdebug /usr/local/bin/composer.phar $@
# On MacOS with composer installed using brew, comment previous line
# Install jq by executing `brew install jq` and uncomment following line.
# php_no_xdebug /usr/local/Cellar/composer/`brew info --json=v1 composer | jq -r '.[0].installed[0].version'`/libexec/composer.phar $@

3
यह अब तक समस्या का सबसे सुरुचिपूर्ण समाधान है, IMHO। धन्यवाद जॉइस!
थॉमस हैनसन

2
श्रेष्ठ। स्क्रिप्ट। एवर
मैकीज पाप्रोकी

1
मुझे शेबबैंग को bin/bashइसके बजाय समायोजित करना था /bin/sh, क्योंकि बाद वाले को functionकीवर्ड (Ubuntu 14.04 LTS) पसंद नहीं था ।

मैंने कोड को अपडेट किया है और बेहतर अनुकूलता के लिए फ़ंक्शन कीवर्ड को हटा दिया है।
जायसी बाबू

1
आप पुष्टि कर सकते हैं कि आप नवीनतम संस्करण चला रहे हैंcomposer self-update
जॉइस बाबू

77

यह कमांड CLI (और इस प्रकार संगीतकार) के लिए PHP5 Xdebug मॉड्यूल को निष्क्रिय कर देगा:

sudo php5dismod -s cli xdebug

यह xdebug.ini सिमलिंक को हटा देता है/etc/php5/cli/conf.d/

यह http://blog.lorenzbausch.de/2015/02/10/php-disable-xdebug-for-cli/ पर सुझाव दिया गया था।

ध्यान दें कि Ubuntu 16.04 के लिए आपको संभवतः इसे इस तरह चलाने की आवश्यकता है:

sudo phpdismod -s cli xdebug

4
मैंने दो उपनाम जोड़े हैं , alias xdebug-on='sudo php5enmod -s cli xdebug'और alias xdebug-off='sudo php5dismod -s cli xdebug'अब xdebug को सक्षम xdebug-onऔर अक्षम करना आसान है xdebug-off
डैनियल मेके

पोर्टेबल नहीं है। शायद केवल लिनक्स।
दिति

लारवेल होमस्टेड बॉक्स (उबंटू / डेबियन) पर बहुत अच्छा काम करता है। यह कैसे काम करता है का एक लंबा विवरण: laracasts.com/discuss/channels/forge/disable-xdebug
जस्टिन

2
इस के लिए धन्यवाद :), लेकिन मेरे पास 16.04 ubuntu है और अगर किसी को इसे बस चलाने के लिए sudo phpdismod -s cli xdebug का उपयोग करने की आवश्यकता होगी
एंजेल एम।

Ubuntu में php7 के बारे में कैसे? क्या मुझे केवल सिमलिंक निकालने की आवश्यकता है? /etc/php/7.0/cli/conf.d
Gastonnina

40

मुझे नहीं लगता कि PHP को कॉन्फ़िगर करने का कोई विकल्प है ताकि यह लक्षित स्क्रिप्ट के अनुसार विभिन्न कॉन्फ़िगरेशन को लोड कर सके। कम से कम, .in फ़ाइलों की नकल के बिना ...

हालाँकि, आप php के साथ कम्पोज़र चलाते समय थोज़ विकल्प जोड़ सकते हैं:

php -n -d extension=needed_ext.so composer.phar

-nकिसी भी php.ini को अनदेखा करने के लिए PHP को बताएगा। यह xdebug को इस आदेश के लिए लोड होने से रोकेगा।

-dविकल्प आपको अपने इच्छित किसी भी विकल्प को जोड़ने की अनुमति देता है (उदाहरण के लिए, need_ext.so को सक्रिय करें)। आप कई -dविकल्पों का उपयोग कर सकते हैं । बेशक, यह वैकल्पिक है, आपको इसकी आवश्यकता नहीं हो सकती है।

फिर आप एक उपनाम बना सकते हैं, इसे फिर से मीठा बनाने के लिए।

एक विशिष्ट समाधान (क्योंकि संगीतकार को आवश्यकता होती है):

php -n -d extension=json.so composer.phar

greg0ire> मेरा समाधान, उसके आधार पर:

#!/bin/bash
options=$(ls -1 /usr/lib64/php/modules| \

    grep --invert-match xdebug| \

    # remove problematic extensions
    egrep --invert-match 'mysql|wddx|pgsql'| \

    sed --expression 's/\(.*\)/ --define extension=\1/'| \

    # join everything together back in one big line
    tr --delete '\n'
)

# build the final command line
php --no-php-ini $options ~/bin/composer $*

alias composer=/path/to/bash/script.sh

यह बदसूरत दिखता है (मैंने xargs के साथ ऐसा करने की कोशिश की और असफल रहा), लेकिन काम करता है ... मुझे हालांकि कुछ एक्सटेंशन को अक्षम करना पड़ा, अन्यथा मुझे निम्नलिखित चेतावनी मिलती है:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysqli.so' - /usr/lib64/php/modules/mysqli.so: undefined symbol: mysqlnd_connect in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_mysql.so' - /usr/lib64/php/modules/pdo_mysql.so: undefined symbol: pdo_parse_params in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_pgsql.so' - /usr/lib64/php/modules/pdo_pgsql.so: undefined symbol: pdo_parse_params in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/wddx.so' - /usr/lib64/php/modules/wddx.so: undefined symbol: php_XML_SetUserData in Unknown on line 0

मैंने -nकल कोशिश की और एक समस्या थी क्योंकि मैं pharविस्तार को याद कर रहा था । मैं अधिक से अधिक विस्तार जोड़ने की कोशिश करूंगा जब तक कि यह काम न करे, मुझे लगता है कि यह एक अच्छा समाधान है। उर्फ के अनुसार, मेरे पास पहले से ही कुछ zsh उपनाम हैं जिन्हें मैं बनाए नहीं रखता। हो सकता है कि मैं बाइनरी को बैश स्क्रिप्ट के साथ बदलने की कोशिश करूं, या देखूं कि क्या मैं उपनामों को कॉन्फ़िगर कर सकता हूं।
greg0ire

हालाँकि, इस श्वेतसूची दृष्टिकोण के साथ समस्या यह है कि श्वेतसूची उस आधार पर उगाई जा सकती है जो लोगों को उनके composer.jsonलिए आवश्यक है , उदाहरण के लिए "ext-ldap": "*", या बस इस बात पर निर्भर करता है कि पोस्ट इंस्टॉल कार्यों को ठीक से चलाने के लिए क्या आवश्यक है ... अगर केवल एक एक्सटेंशन को ब्लैकलिस्ट करने का एक तरीका था ...
greg0ire

1
मैं के उत्पादन के साथ कुछ करने की कोशिश करेंगेphp -m
greg0ire

यह मेरे दिमाग में आता है, लेकिन, मुझे लगता है कि आप एक विकास के माहौल में xdebug का उपयोग करते हैं। क्या संगीतकार इतना धीमा है कि उसे इस ट्विक की आवश्यकता है?
गुई-डॉन

अरे नहीं, मैंने इसे केवल के आउटपुट से देखा है diagnose, और जब से मैं अपनी टीम के लिए विकास डॉकटर कंटेनरों का निर्माण कर रहा हूं , सबसे छोटी गति सुधार उन सभी को लाभ दे सकता है
greg0ire

14

एक उपनाम बनाकर आप उस composer xdebugत्रुटि संदेश को दबा देंगे ।

बस ~/.bash_aliasesअपने सिस्टम में इस लाइन को अपने साथ जोड़ें और इसे त्रुटिपूर्ण रूप से काम करना चाहिए।

alias composer="php -n /usr/local/bin/composer"

नए उपनाम को composerउपलब्ध कराने के लिए शेल को पुनः लोड करें ।

source ~/.bash_profile

उपयोग:

$ composer --version

नोट:
आपको किसी अन्य पैरामीटर का उपयोग करने की आवश्यकता नहीं है।
आपके सिस्टम के आधार पर आपके .bashrcबजाय हो सकता है .bash_profile

अपडेट करें:

जैसा कि @AlexanderKachkaev ने टिप्पणियों में उल्लेख किया है कि इसके कुछ मेमोरी वर्जन जोड़ने के लिए कुछ भी नहीं है।

alias composer="php -d memory_limit=-1 -n /usr/local/bin/composer"

3
जैसे ही पोस्ट इंस्टाल या अपडेट स्क्रिप्ट्स में से किसी एक एक्सटेंशन की जरूरत होती है, यह बहुत अच्छी तरह से नहीं खेलेगा ... हालांकि साधारण प्रोजेक्ट्स पर यह एक अच्छा समाधान हो सकता है।
greg0ire

1
-nविकल्प को अक्षम Pharविस्तार तो यह से चलाने के लिए विफल हो सकता हैcomposer.phar
brzuchal

1
इसने मेरे लिए काम किया। इसके अलावा, मैंने दुर्घटना से बचने के लिए मेमोरी सीमा को अक्षम कर दिया:alias composer="php -d memory_limit=-1 -n /usr/local/bin/composer"
अलेक्जेंडर काचकेव

यह समाधान मेरी स्थिति के लिए बहुत सरल और व्यावहारिक है। @AlexanderKachkaev से स्मृति सीमा सुझाव एक जरूरी है। उत्तर को संपादित करने के लिए अच्छा हो।
हेनरी

12

मैं एक जवाब के साथ आया था जो OSX के लिए बहुत अच्छा काम करता है, और संभवतः किसी भी PHP संस्करण के लिए अनुकूलित किया जा सकता है जो "अतिरिक्त आईएनआरआईआईआर" में व्यक्तिगत .ini फ़ाइलों का उपयोग करके अपने एक्सटेंशन को लोड करता है:

#!/bin/sh

function php-no-xdebug {
    local temporaryPath="$(mktemp -t php-no-debug)"

    find /opt/local/etc/$1/php.ini /opt/local/var/db/$1/*.ini ! -name xdebug.ini | xargs cat > "$temporaryPath"
    php -n -c "$temporaryPath" "${@:2}"
    rm -f "$temporaryPath"
}

alias composer="php-no-xdebug php56 ~/bin/composer"

महान! मैंने उबंटू 14.04-15.10 के लिए इस पर आधारित एक सामान्य-उद्देश्य स्क्रिप्ट बनाई। gist.github.com/perk11/816c4e64023ea26976cf
Konstantin

शानदार, मैक ओएस पर ठीक काम करता है, काढ़ा स्थापित php 7.1 पर। स्व-परीक्षा!
एंटोनियो कार्लोस रिबेरो

7

मैं आमतौर पर प्रति प्रोजेक्ट एक शेल स्क्रिप्ट बनाता हूं, क्योंकि हर प्रोजेक्ट का एक और PHP संस्करण होता है। यह एक में है /bin/करने के लिए अगले निर्देशिका composer.pharऔर composer.jsonऔर मैं के रूप में चलाते ./bin/composerअपने प्रोजेक्ट निर्देशिका में।

यह इस तरह दिखता है (php56 के लिए)

#!/bin/sh
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

COMPOSER_DISABLE_XDEBUG_WARN=1 /opt/local/bin/php56 \
    -d xdebug.remote_enable=0 -d xdebug.profiler_enable=0 \
    -d xdebug.default_enable=0 $DIR/../composer.phar "$@"

-dविकल्पों को प्रभावी ढंग से अक्षम xdebug। COMPOSER_DISABLE_XDEBUG_WARN=1भाग चेतावनी संगीतकार मुद्दों अक्षम करता है।

Xdebug एक्सटेंशन को अक्षम करना पसंद किया जाता है ( संगीतकार समस्या निवारण देखें) ), लेकिन मुझे व्यक्तिगत रूप से सरल स्क्रिप्ट पसंद है।

मेरी मशीन पर कुछ समय: 2 xdebug और ini-enable के साथ चलाएँ: 1m33

Xdebug लेकिन ini- अक्षम: 0m19 के साथ चलाएँ

Xdebug के बिना चलाएं: 0m10


मुझे लगता है कि जब से आप XDebug को अक्षम कर रहे हैं, तो आपको इसकी आवश्यकता नहीं है COMPOSER_DISABLE_XDEBUG_WARN=1: यदि आपको चेतावनी मिलती है, तो इसका मतलब है कि आपका स्क्रब काम नहीं करता है। xdebug.remote_autostartयदि दूरस्थ डिबगिंग अक्षम है, तो परिभाषित करना बेकार लगता है।
greg0ire

तुम सही हो xdebug.remote_autostart। स्क्रिप्ट की प्रभावशीलता के बारे में: संगीतकार जाँच करता है कि क्या xdebug एक्सटेंशन लोड किया गया है, न कि अगर यह वास्तव में कुछ भी कर रहा है तो यहां कोड देखें । Ini विकल्प "नियमित" php स्क्रिप्ट में ठीक काम करते हैं लेकिन फिर से: मैंने कोई प्रदर्शन परीक्षण नहीं किया है ...
Joost

(अंत में) इस समस्या निवारण के बारे में संगीतकार मैनुअल में प्रासंगिक हिस्सा मिला : संगीतकार पर xdebug प्रभाव । यह बताता है कि ini झंडे के माध्यम से सभी xdebug विकल्पों को अक्षम करना प्रदर्शन के मुद्दों को कम करने के लिए पर्याप्त नहीं है। इसलिए मेरी स्क्रिप्ट काम नहीं करेगी। बहुत बुरा!
जोस्त

मैंने कुछ समय (मैक ओएस एक्स पर) किया और मुझे कहना होगा कि मैं अपनी स्क्रिप्ट का उपयोग करके प्रदर्शन में सुधार के साथ काफी खुश हूं! Xdebug विकल्पों के सक्षम होने के साथ यह 1m33 लेता है , अक्षम विकल्पों के साथ यह 0m19 लेता है । Xdebug एक्सटेंशन के बिना इसे 0m10 लगता है ।
जोस्ट

ठीक है, वैसे भी एक सुधार है। सबसे अच्छा उपलब्ध सुधार नहीं, लेकिन फिर भी एक बड़ा सुधार (कम से कम OS X पर)
greg0ire

6

यदि आप PHPStorm का उपयोग करते हैं, तो नवीनतम रिलीज़ (2016.2) सीएलआई स्क्रिप्ट ऑन-डिमांड के लिए XDebug को सक्षम करने की सुविधा के साथ आता है, जिसका अर्थ है कि आप अपनी विकास मशीन पर विश्व स्तर पर XDebug को बंद कर सकते हैं। जब आपकी परियोजनाओं के अंदर कोड की आवश्यकता होती है, तो IDE इसे उड़ने में सक्षम करेगा।

https://blog.jetbrains.com/phpstorm/2016/06/xdebug-on-demand-for-cli-php-scripts-in-phpstorm-2016-2-eap/

PhpStorm 2016.2 Xdebug ऑन डिमांड मोड का परिचय देता है जहां आप अपने वैश्विक PHP इंस्टॉल के लिए Xdebug को अक्षम कर सकते हैं, और PhpStorm केवल तभी इसे सक्षम कर सकेगा जब आपको इसकी आवश्यकता हो - जब आप अपनी स्क्रिप्ट को डीबग कर रहे हों, या जब आपको कोड रिपोर्ट की आवश्यकता हो।

लिंक किए गए लेख में वर्णित के अनुसार, आपको XDebug के पथ को शामिल करने के लिए अपनी PHP दुभाषियों की प्राथमिकताओं को संपादित करने की आवश्यकता है।

मेरे लिए यह एकदम सही समाधान की तरह लगता है, जैसा कि मैं आमतौर पर केवल आईडीडबग चाहता हूं जबकि मैं आईडीई में हूं।

हालाँकि, XDebug के अन्य संभावित उपयोग हैं जब आप "ऑफ़लाइन" होते हैं जैसे त्रुटि लॉग में विस्तारित स्टैक डंप, जिसे आप इसे विश्व स्तर पर बंद करके खो देंगे। बेशक आपको उत्पादन पर सक्षम XDebug नहीं होना चाहिए, इसलिए यह विकास में बीटा-परीक्षण या स्वचालित-परीक्षण CLI लिपियों जैसे मामलों का उपयोग करने के लिए सीमित होगा।


5

PHP मॉड्यूल को अस्थायी रूप से सक्षम या अक्षम करने के साथ अव्यवस्था के बजाय, जब आपके पास PHP का उपयोग करके समवर्ती प्रक्रियाएं हो सकती हैं (उदाहरण के लिए एक CI पाइपलाइन के भाग के रूप में), आप PHP को एक अलग मॉड्यूल लोडिंग निर्देशिका में इंगित करने के लिए कह सकते हैं।

जबकि यह ऊपर वर्णित कुछ समाधानों के समान है, यह कुछ किनारे के मामलों को हल करता है, जो जेनकींस या अन्य CI धावक द्वारा उपयोग किए जाने पर बहुत उपयोगी होता है जो समान मशीन पर परीक्षण को समवर्ती रूप से चलाता है।

ऐसा करने का सबसे आसान तरीका पर्यावरण चर का उपयोग करना है PHP_INI_SCAN_DIR

स्क्रिप्ट या बिल्ड कार्य में इसका उपयोग करना आसान है:

export PHP_INI_SCAN_DIR=/etc/php.d.noxdebug php composer install

निश्चित रूप से आप /etc/php.d.noxdebug को पहले तैयार करना चाहेंगे, कुछ ऐसा करना:

mkdir /etc/php.d.noxdebug cp /etc/php.d/* /etc/php.d.noxdebug rm /etc/php.d.noxdebug/xdebug.ini

इसका मतलब है कि आपके पास पुराने php वातावरण के समान वातावरण है, जिसमें केवल एक मॉड्यूल गायब है। मतलब आपको phar / json मॉड्यूल को लोड करने की आवश्यकता के बारे में चिंता करने की ज़रूरत नहीं है जैसा कि आप php -n समाधान के साथ करेंगे।


मैं सिर्फ़ ini फ़ाइलों को कॉपी करने के बजाय सिमिलिंक का उपयोग करूंगा।
greg0ire

1
मैं सिम्बलिंक का उपयोग करने से कतराता हूं क्योंकि इससे यह आभास होता है कि फ़ोल्डर सिंक में हैं, जबकि नए मॉड्यूल्स 'noxdebug' फ़ोल्डर में स्वचालित रूप से शामिल नहीं होंगे।
20

4

मैं विंडोज-आधारित कम्पोज़र इंस्टॉलर के लिए एक समाधान के साथ आया था - यह किसी भी कम्पोज़र इंस्टॉलेशन के लिए काम करना चाहिए, यह मूल रूप से लोड किए गए INI फ़ाइल की एक प्रतिलिपि बनाता है और xdebug zend एक्सटेंशन को कमेंट करता है, फिर उस कॉन्फ़िगरेशन फ़ाइल को लोड करता है जब यह रेंजर रन करता है ।

मैंने यह देखने के लिए एक समस्या खोली है कि क्या वे इस बदलाव को एकीकृत करना चाहेंगे:

https://github.com/composer/windows-setup/issues/58

आप वहां मेरे निर्देश और कोड पा सकते हैं।


सरल और प्रभावी :) क्या आपको स्व-अद्यतन के माध्यम से संगीतकार को अपडेट करने के बाद इसे फिर से लागू करना है?
marcovtwout

4

जैसा कि जॉइस के उत्तर में उल्लेख किया गया है , यह मुद्दा अब संगीतकार के नवीनतम संस्करण में मौजूद नहीं है।

इसे नोट करने के लिए कंपोज़र डॉक्यूमेंटेशन अपडेट किया गया है । यह विवरण देता है कि आप संगीतकार के साथ xdebug को कैसे सक्षम कर सकते हैं (यदि आवश्यक हो)।

आप सेल्फ-अपडेट का उपयोग करके अपने संगीतकार के संस्करण को अपडेट कर सकते हैं ।

मेरे मैक पर मुझे करना था: sudo php /opt/local/bin/composer self-update

इस बारे में आगे का विवरण होमब्रेव पीएचपी के संदर्भ में इस मुद्दे पर पाया जा सकता है ।


एक दम बढ़िया! क्या आप जानते हैं कि इस परिवर्तन में पीआर कहाँ है? मुझे इसे एक और सीएलआई ऐप
टॉमहॉट वोटरुबा

3

PHP विन्यास का प्रत्यक्ष हेरफेर

यहाँ मेरी योगदान एक पर आधारित है Homebrew Mac OS X पर पीएचपी स्थापना -installed

यह एक शेल-स्क्रिप्ट आवरण है, जिसे एक निष्पादन योग्य फ़ाइल के रूप में सहेजने के लिए डिज़ाइन किया गया है /usr/local/bin/composer, जिसमें कंपोज़र बाइनरी है /usr/local/bin/composer.phar:

#!/bin/sh
sed -i '' -e 's:zend_extension="/usr/local/opt/php55-xdebug/xdebug.so":;zend_extension="/usr/local/opt/php55-xdebug/xdebug.so":' /usr/local/etc/php/5.5/conf.d/ext-xdebug.ini
/usr/local/bin/php /usr/local/bin/composer.phar "$@"
sed -i '' -e 's:;zend_extension="/usr/local/opt/php55-xdebug/xdebug.so":zend_extension="/usr/local/opt/php55-xdebug/xdebug.so":' /usr/local/etc/php/5.5/conf.d/ext-xdebug.ini

संचालन का सिद्धांत

आवरण स्क्रिप्ट:

  • sed का उपयोग करता हैXdebug (पंक्ति 2) को अक्षम करते हुए कॉन्फ़िगरेशन फ़ाइल को अस्थायी रूप से संशोधित करने के लिए का
  • कमांडर को अंजाम देता है, कमांड से गुजरता है (पंक्ति 3)
  • कॉन्फ़िगरेशन फ़ाइल को पुनर्स्थापित करने के लिए sed का उपयोग करता है, Xdebug (पंक्ति 4) को फिर से सक्षम करना

स्क्रिप्ट PHP 5.5 के OS X / Homebrew इंस्टॉलेशन के लिए युग्मित है। पथों को अन्य PHP संस्करणों और अन्य ऑपरेटिंग सिस्टमों और पैकेज प्रबंधकों की निर्देशिका लेआउट के साथ काम करने के लिए समायोजित किया जाना चाहिए। ध्यान दें कि सेड के कुछ संस्करणों को -iविकल्प के बाद खाली-स्ट्रिंग तर्क की आवश्यकता नहीं है ।

कैविएट यूटिलिटर

स्क्रिप्ट सीधी है, इसमें यह सीधे मुख्य PHP कॉन्फ़िगरेशन फ़ाइलों पर काम करता है, हालांकि यह भी एक खामी है: Xdebug को इस स्क्रिप्ट के साथ समवर्ती रूप से निष्पादित होने वाली किसी भी स्क्रिप्ट के लिए अक्षम किया जाएगा।

मेरे विकास के माहौल में, यह एक स्वीकार्य व्यापार-बंद है, यह देखते हुए कि संगीतकार को मैन्युअल रूप से और केवल कभी-कभी निष्पादित किया जाता है; हालाँकि आप इस तकनीक का उपयोग नहीं करना चाहते हैं यदि कम्पोज़र को स्वचालित तैनाती प्रक्रिया के हिस्से के रूप में निष्पादित किया जाए।


मुझे यकीन नहीं है कि इससे कोई फर्क पड़ेगा कि कंपोज़र द्वारा त्रुटियों को कैसे हैंडल किया जाता है - क्या आपके पास एक विशिष्ट उदाहरण या चिंता है? स्क्रिप्ट का उद्देश्य समस्या के त्वरित समाधान के रूप में है और पूरी तरह से युद्ध-परीक्षण नहीं किया गया है। यह कहते हुए कि, जिस समय में मैं इसका उपयोग कर रहा हूं, इसने बिना किसी समस्या के काम किया है।
j13k

1
मेरी चिंता यह है कि स्क्रिप्ट की अंतिम पंक्ति नहीं चल सकती है।
greg0ire

2

ज्यादातर मामलों में आपको सीएलआई मोड पर xdebug की आवश्यकता नहीं होती है। यदि यह आपके लिए स्वीकार्य है तो आप अलग से cli और cgi को कॉन्फ़िगर कर सकते हैं।

इसलिए यदि आप php-cli.ini और conf-cli.d को php.ini फ़ाइल के पास से बाहर करते हैं, तो आप cli और cgi को अलग-अलग तरीके से कॉन्फ़िगर कर सकते हैं (cgi के लिए यह php.ini और conf.d होगा )। बस xdebug.ini को conf-cli.d में न डालें।


2

यदि आप OS X पर का उपयोग करके संगीतकार स्थापित करते हैं तो आप इस उपनाम का उपयोग कर सकते हैं:

alias composer="php -n $(cat $(which composer) | grep composer.phar | awk '{print $7}')"

1

PHP के कई संस्करणों के साथ मैकपोर्ट स्थापना के लिए मेरा त्वरित समाधान संगीतकार के लिए इस सरल शेल आवरण को लिखना था:

/user/local/bin/composer-nodebug.sh

#!/bin/bash

sudo mv /opt/local/var/db/php53/xdebug.ini /opt/local/var/db/php53/xdebug.NOT
sudo mv /opt/local/var/db/php54/xdebug.ini /opt/local/var/db/php54/xdebug.NOT
sudo mv /opt/local/var/db/php55/xdebug.ini /opt/local/var/db/php55/xdebug.NOT
composer $1 $2 $3 $4 $5 $6 $7
sudo mv /opt/local/var/db/php53/xdebug.NOT /opt/local/var/db/php53/xdebug.ini
sudo mv /opt/local/var/db/php54/xdebug.NOT /opt/local/var/db/php54/xdebug.ini
sudo mv /opt/local/var/db/php55/xdebug.NOT /opt/local/var/db/php55/xdebug.ini

फिर किसी भी कम्पोज़र कमांड को चलाएं जैसे:

sudo composer-nodebug.sh update

कमियां:

  • sudo की आवश्यकता है (जब तक कि आप INI फ़ाइलों को चोद न लें)
  • यदि आप इसे बीच में मारते हैं तो INI फाइलें संशोधित हो जाती हैं
  • भविष्य के PHP संस्करणों की आवश्यकता होगी।
  • जब यह चल रहा है तो अन्य PHP प्रक्रियाएं प्रभावित होती हैं

सुरुचिपूर्ण नहीं, लेकिन सरल।


मुझे लगता है कि शॉर्टकट है जिसका उपयोग आप कर सकते हैं $1…$7... शायद यह $@या ऐसा कुछ है, आपको देखना होगा।
greg0ire

> यदि आप इसे मध्य-मार्ग में मारते हैं, तो INI फाइलें संशोधित हो जाती हैं, जो आपको किल सिग्नल को फंसाकर> भविष्य के PHP संस्करणों को जोड़ने की आवश्यकता होगी। आप इसे एक साधारण लूप के साथ भी ठीक कर सकते हैं
greg0ire

1

Xdebug को अक्षम करने और मेमोरी त्रुटियों को रोकने के लिए संगीतकार के लिए एक उपनाम बनाना:

इस लाइन को अपने ~ / .bash_profile में जोड़ें

alias composer='php -d xdebug.profiler_enable=0 -d memory_limit=-1 /usr/local/bin/composer'

नए उपनाम को उपलब्ध कराने के लिए टर्मिनल को फिर से शुरू करें।


-3

PHP5-cli संस्करण पर Xdebug चेतावनी से छुटकारा पाने के लिए यहां मेरा त्वरित समाधान है। मैंने Ubuntu 14.04 पर PHP5-cli के लिए Xdebug का समर्थन हटा दिया है।

cd /etc/php5/cli/conf.d/

सुडो rm 20-xdebug.ini

अब PHP5-cli पर कोई Xdebug चेतावनी नहीं है।


2
sudo phpdismod xdebugब्रूट के लिए पसंदीदा तरीका होगाrm
जेफ पकेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.