XDebug को निष्क्रिय कैसे करें


124

मुझे लगता है कि जब मैंने XDebug स्थापित किया तो मेरा सर्वर धीमा हो गया। इसलिए, अपनी परिकल्पना का परीक्षण करने के लिए मैं XDebug को पूरी तरह से अक्षम करना चाहता हूं। मैं यह कैसे करना है पर ट्यूटोरियल खोज रहा हूं लेकिन मुझे ऐसी जानकारी नहीं मिल रही है।

जवाबों:


163

अपनी खोज करें php.iniऔर XDebug की तलाश करें।

झूठ के लिए xdebug ऑटोस्टार्ट सेट करें

xdebug.remote_autostart=0  
xdebug.remote_enable=0

अपने प्रोफाइलर को अक्षम करें

xdebug.profiler_enable=0

ध्यान दें कि xdebug अक्षम लेकिन लोड के साथ भी प्रदर्शन हानि हो सकती है । स्वयं एक्सटेंशन लोड करने को अक्षम करने के लिए, आपको इसे अपने php.ini में टिप्पणी करना होगा। इस तरह दिखने वाली एक प्रविष्टि खोजें:

zend_extension = "/path/to/php_xdebug.dll"

और ;यह टिप्पणी करने के लिए एक , जैसे ;zend_extension = …

इस पोस्ट XDebug की जाँच करें , सिंगल .php फ़ाइल के लिए दूरस्थ डिबगिंग को अक्षम कैसे करें?


धन्यवाद! मैंने पाया कि मेरी समस्या एपीसी थी, मेरी याददाश्त कम थी। आप सही हैं, xdebug PHP का हिस्सा है, अपाचे का मॉड्यूल नहीं। अब सबकुछ ठीक चल रहा है।
बेतो एविगा

1
@ उदय और क्या होगा अगर मैं अपने php.ini में इसका कोई पता नहीं लगा सकता। मैंने grep खोज के साथ / etc / php के अंदर हर जगह जाँच की है।
हरलान डोबरेव

@HaralanDobrev चेक phpinfo () यह देखने के लिए कि क्या वास्तव में xdebug सक्षम है। यदि यह है, तो देखें कि क्या आपके पास php.ini फ़ाइल से जुड़ी कोई अतिरिक्त आईआई फाइलें हैं। इसके अतिरिक्त सुनिश्चित करें कि आप सही आईएनआई फ़ाइल का संपादन कर रहे हैं। इन फ़ाइलों को कई स्थानों पर रखना संभव है।
उदय सावंत

18
@UdaySawant मैं लाइन zend_extension=/usr/lib/php5/20090626+lfs/xdebug.soसे टिप्पणी करने के बाद इसे अक्षम करने में सक्षम था /etc/php5/conf.d/xdebug.ini। हालाँकि उत्तर में निर्दिष्ट लाइनों /usr/lib/php5में न तो उपलब्ध हैं और न ही /etc
हरलन डोबरेव

5
वास्तव में, एक्सटेंशन को बिल्कुल लोड नहीं करना बेहतर है, और केवल इसे लोड करना है, यदि आवश्यक हो। XDebug वास्तव में चीजों को धीमा कर देता है, भले ही अक्षम हो। किसी को यह महसूस नहीं हो सकता है कि वेब पेज बनाने वाली कुछ स्क्रिप्टों को डिबगिंग / प्रोफाइलिंग करते समय प्रदर्शन बहुत कम हो गया है, लेकिन डेमन स्क्रिप्ट के साथ, यह बहुत कुछ दिखाता है। मैंने अभी एक ब्लॉग पोस्ट लिखी है कि इसे क्यों नहीं लोड किया जा रहा है, यह बेहतर है, यहाँ: bit.ly/14SaWpp
thesilentman

99

उबंटू के समान लिनक्स वितरण पर काम करने वाला एक आसान समाधान

sudo php5dismod xdebug
sudo service apache2 restart

10
क्या आप अपने समाधान के बारे में थोड़ा और विवरण जोड़कर अपने जवाब को विस्तृत कर सकते हैं?
abarisone

3
यह आदेश ubuntu सेंटो के लिए नहीं है। उस स्पष्टीकरण को प्रदान करना चाहिए क्योंकि आप एकमात्र व्यक्ति नहीं हैं जो एक ही लिनक्स डिस्ट्रो का उपयोग करते हैं।
MaXi32

1
यह Apache2 के लिए है और CLI के लिए नहीं है। इनमें अलग-अलग php.ini फाइलें हो सकती हैं
Adib Aroui

6
अपने PHP संस्करण के आधार पर, आपको दर्ज करना चाहिए$ sudo phpdismod xdebug
रूसोलेक्सैंड्रे

2
यह उत्तर केवल PHP पर लागू होता है जब इसे Apache के mod-php के साथ प्रयोग किया जा रहा है।
जॉन हंट

35

में लिनक्स Ubuntu ( शायद यह भी एक और - यह परीक्षण नहीं किया है ) के साथ वितरण PHP 5 बोर्ड पर, आप का उपयोग कर सकते हैं:

sudo php5dismod xdebug

और PHP 7 के साथ

sudo phpdismod xdebug

और उसके बाद, कृपया सर्वर को पुनरारंभ करें:

sudo service apache2 restart

PHP 7 ने xiebug को ini फ़ाइल से हटा दिया, मुझे विश्वास है। तो इस जवाब से मुझे मदद मिली।
कीथ हॉलिडे

1
PHP7 के लिए काम किया। Phd.ini में xdebug सेटिंग्स को टिप्पणी करने से काम नहीं चला।
कलोब तौलिएन

1
काम नहीं किया। चेतावनी: मॉड्यूल xdebug ini फ़ाइल /etc/php/7.1/mods-available
dxvargas

25

इसके अलावा, आप xdebug_disable()अपने कोड में जोड़ सकते हैं । प्रयत्न:

if(function_exists('xdebug_disable')) { xdebug_disable(); }


32
यह केवल स्टैकट्रैक्स प्रदर्शित करने में अक्षम करता है, यह वास्तव में xdebug को अक्षम नहीं करता है (बहुत ही नामित फ़ंक्शन, मुझे पता है)
BlueRaja - Danny Pflughoeft

यह बहुत सारी स्थितियों से निपटने का एक शानदार तरीका है। भले ही यह वास्तव में मांस की जरूरतों को पूरा नहीं करता है, इसके लिए धन्यवाद।
जेक

3
@ जेक, मुझे यकीन नहीं है कि ओपी एक कसाई की तलाश में था।
thephpdev

1
@ जेक हे। वैसे भी केवल मजाक कर रहा था। 😛
thephpdev

1
@BinarWeb क्योंकि लोग सोच सकते थे कि यह फ़ंक्शन पूरे xdebug को निष्क्रिय कर देता है और प्रदर्शन में सुधार करता है, लेकिन ऐसा नहीं है
Fogus

12

मैंने कॉन्फ़िगर फ़ाइल का नाम बदला और सर्वर को फिर से शुरू किया:

$ mv /etc/php/7.0/fpm/conf.d/20-xdebug.ini /etc/php/7.0/fpm/conf.d/20-xdebug.ini.bak

$ sudo service php7.0-fpm restart && sudo service nginx restart

इसने मेरे लिए काम किया।


इसने मेरे लिए काम किया, सिवाय /etc/php/7.0/cli/conf.d के बजाय /etc/php/7.0/fpm/conf.d के अलावा
होगा

यह मैक ओएसएक्स पर या सेंटोस योनि पर php 7.2,9 पर भी काम करेगा। बस xdebug.ini का नाम बदलकर xdebug.ini.old या कुछ और
vknyvz

यह मुख्य है
माइकल सी वालेस

10

Php.ini में टिप्पणी विस्तार और अपाचे को पुनः आरंभ करें। यहाँ एक सरल स्क्रिप्ट है (आप इसे शॉर्टकट बता सकते हैं)

xdebug-toggle.php

define('PATH_TO_PHP_INI', 'c:/xampp/php/php.ini');
define('PATH_TO_HTTPD', 'c:/xampp/apache/bin/httpd.exe');
define('REXP_EXTENSION', '(zend_extension\s*=.*?php_xdebug)');

$s = file_get_contents(PATH_TO_PHP_INI);
$replaced = preg_replace('/;' . REXP_EXTENSION . '/', '$1', $s);
$isOn = $replaced != $s;
if (!$isOn) {
    $replaced = preg_replace('/' . REXP_EXTENSION . '/', ';$1', $s);
}
echo 'xdebug is ' . ($isOn ? 'ON' : 'OFF') . " now. Restarting apache...\n\n";
file_put_contents(PATH_TO_PHP_INI, $replaced);

passthru(PATH_TO_HTTPD . ' -k restart');

XDebug को पूरी तरह से अक्षम करने के लिए, यह सही उत्तर है, मेरी टिप्पणी @ UdaySawant के उत्तर में देखें।
thesilentman

8

xubuntu में मैंने इसके साथ CLI के लिए पूरी तरह से xdebug को अक्षम कर दिया है ...

sudo rm /etc/php5/cli/conf.d/*xdebug*

नोट: यह वास्तव में मुझे संगीतकार अपडेट के लिए मदद करता है। प्रदर्शन के मुद्दों के लिए xdebug को अक्षम करने की आवश्यकता है।
आर्टीजन

3
यह लार्वा होमस्टीड के लिए भी काम करता है। xestebug को होमस्टेड / लार्वेल में निष्क्रिय करने के लिए बस फाइल में सेक्शन पर टिप्पणी करें/etc/php5/cli/conf.d/20-xdebug.ini
ulkas

यदि आप टर्मिनल से php स्क्रिप्ट चलाने वाले वर्थ का उल्लेख करते हैं जो passthruxdebug सक्षम के साथ फ़ंक्शन के माध्यम से टर्मिनल से किसी अन्य php स्क्रिप्ट को चलाता है , तो xdebug लटक सकता है और निष्पादन को रोक सकता है।
घर्मन

1
यह सुनिश्चित नहीं है कि डाउनवोट किस लिए था, यह सीएलआई और अन्य वातावरणों के लिए xdebug को अक्षम करने का एकमात्र तरीका प्रतीत होता है। हालाँकि मैं उपलब्ध होने unlinkपर rmइसका उपयोग करूँगा ।
एंडी

4
मैं ini को rm / अनलिंक नहीं करूंगा, इसके बजाय ulkas द्वारा सुझाए गए तरीके से, sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.iniऔर इसे टिप्पणी दें।
जस्टिन

7

CLI ini फ़ाइल में Windows (WAMP) पर:

X:\wamp\bin\php\php5.x.xx\php.ini

टिप्पणी लाइन

; XDEBUG Extension

;zend_extension = "X:/wamp/bin/php/php5.x.xx/zend_ext/php_xdebug-xxxxxx.dll"

अपाचे प्रक्रिया करेंगे xdebug, और संगीतकार नहीं करेंगे।


4

दो विकल्प:

1: इनिशियलाइज़ेशन स्क्रिप्ट में निम्नलिखित कोड जोड़ें:

 if (function_exists('xdebug_disable')) {
           xdebug_disable();
         }

2: php.ini पर निम्न ध्वज जोड़ें

 xdebug.remote_autostart=0
 xdebug.remote_enable=0

1 विकल्प की सिफारिश की है।


4

अपनी PHP.ini खोजें और XDebug की तलाश करें।

सामान्य रूप से उबंटू में इसका रास्ता है

/etc/php5/apache2/php.ini  

निम्नलिखित बदलाव करें (शुरुआत में उन्हें जोड़ने के लिए बेहतर टिप्पणी करें)

xdebug.remote_autostart=0
xdebug.remote_enable=0
xdebug.profiler_enable=0

फिर उबंटू के लिए अपने सर्वर को फिर से शुरू करें

sudo service apache2 restart

4

Xdebug अक्षम करें

PHP 7 के लिए: sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.ini

PHP 5 के लिए: sudo nano /etc/php5/cli/conf.d/20-xdebug.ini

फिर सब कुछ टिप्पणी करें और सहेजें।


अद्यतन - केवल सीएलआई के लिए अक्षम

@ Igoemon की टिप्पणी के अनुसार, यह एक बेहतर तरीका है:

PHP 7.0 (NGINX)

sudo mv /etc/php/7.0/cli/conf.d/20-xdebug.ini /etc/php/7.0/cli/conf.d/20-xdebug.ini.old
sudo service nginx restart

नोट: PHP के अपने संस्करण के लिए पथ अद्यतन करें।


एक समाधान नहीं है, क्योंकि /etc/php/7.0/cli/conf.d/20-xdebug.ini सिर्फ एक सिम्लिंक है और यदि आप इसे संपादित करते हैं, तो आप मूल फ़ाइल को संपादित करते हैं जो कि cli और non-cli के लिए आम है। मुझे लगता है कि सही समाधान सिंपल डिलीट करना सरल है।
emonवोमन

अद्यतन उत्तर ^
जस्टिन

4

Ubuntu 16.04 xdebug को PHP से हटा दें।

अपनी php.ini फ़ाइल ढूंढें और सुनिश्चित करें कि xdebug है:

grep -r "xdebug" /etc/php/

यह विभिन्न संस्करणों के साथ आ सकता है, यदि ऐसा है तो php -vअपने संस्करण को खोजने के लिए दौड़ें ।

Php.ini फ़ाइल को संपादित करें, जैसे:

sudo vi /etc/php/5.6/mods-available/xdebug.ini

लाइन टिप्पणी:

//zend_extension=xdebug.so

फ़ाइल सहेजें


हां, आपको निश्चित रूप से आपके द्वारा किए गए सभी (गलत) xdebug कॉन्फ़िगरेशन का पता लगाने के लिए पहले कमांड की आवश्यकता है। धन्यवाद!
एरोन लियू

4

यदि आप php-fpmनिम्नलिखित का उपयोग कर रहे हैं तो पर्याप्त होना चाहिए:

sudo phpdismod xdebug
sudo service php-fpm restart

ध्यान दें, कि आपको अपने php संस्करण के आधार पर इसे ट्वीक करना होगा। उदाहरण के लिए php 7.0 आप कर रहे हैं:

sudo phpdismod xdebug
sudo service php7.0-fpm restart

चूंकि, आप php-fpm चला रहे हैं इसलिए वास्तविक वेबसर्वर को पुनरारंभ करने की कोई आवश्यकता नहीं होनी चाहिए। किसी भी स्थिति में अगर आप fpm का उपयोग नहीं करते हैं, तो आप बस नीचे दिए गए किसी भी आदेश का उपयोग करके अपने वेबसर्वर को पुनः आरंभ कर सकते हैं:

sudo service apache2 restart
sudo apache2ctl restart

3

मैं इसी तरह के मुद्दे पर भाग गया। कभी-कभी, आप php.ini में xdebug.so नहीं पाते। जो मामले में, phpinfo()एक php फ़ाइल में निष्पादित और के लिए जाँच करें Additional .ini files parsed। यहां आपको अधिक आईएनआई फाइलें दिखाई देंगी। इनमें से एक xdebug की आईएनआई फ़ाइल होगी। बस इस फ़ाइल को निकालें (या नाम बदलें), अपाचे को पुनरारंभ करें और यह एक्सटेंशन हटा दिया जाएगा।


3

मुझे निम्नलिखित समस्या थी: भले ही मैंने सेट किया हो

xdebug.remote_enable=0 

Xdebug- त्रुटि-संदेश-सजावट दिखाया गया था।

मेरा समाधान:

xdebug.default_enable=0

केवल अगर मैं इस ध्वज का उपयोग करता हूं, तो Xdebug को अक्षम कर दिया गया था।


3

(यह CentOS के लिए है)

कॉन्फ़िगरेशन फ़ाइल का नाम बदलें और अपाचे को पुनरारंभ करें।

sudo mv /etc/php.d/xdebug.ini /etc/php.d/xdebug.ini.old
sudo service httpd restart

पुन: सक्षम करने के लिए रिवर्स करें।


1

यदि आप Mac OS X पर MAMP प्रो का उपयोग कर रहे हैं, तो इसे MAMP क्लाइंट के माध्यम से PHP टैब के तहत सक्रिय Xdebug को अनचेक करके किया जाता है :

MAMP प्रो में Xdebug को निष्क्रिय करना


1

तो, हाँ, आप सभी की जरूरत है, बस की तरह INI फ़ाइल में टिप्पणी लाइन zend_extension=xdebug.so या इसी ।

टिप्पणियाँ अर्धविराम जोड़कर की जा सकती हैं।

लेकिन, इस तरह का जवाब पहले से ही जोड़ा गया है, और मैं Xdebug स्थिति स्विच करने के लिए तैयार समाधान साझा करना चाहूंगा।

मैंने Xdebug के लिए त्वरित स्विचर बनाया है। शायद यह किसी के लिए उपयोगी होगा।

Xdebug स्विचर


1

WAMP के लिए, टास्कबार ट्रे में Wamp आइकन पर बायाँ-क्लिक करें। PHP पर होवर करें और फिर php.ini पर क्लिक करें और इसे अपने टेक्स्टडिटर में खोलें।

अब, 'zend_extension' वाक्यांश को खोजें और जोड़ें; (अर्धविराम) सामने है।

WAMP को पुनरारंभ करें और आप जाने के लिए अच्छे हैं।


1

Apache / 2.4.33 (Win64) PHP / 7.2.4 myHomeBrew स्टैक

Php.ini के अंत में मैं PhdStorm के साथ उपयोग के लिए Xdebug को प्रबंधित करने के लिए निम्नलिखित का उपयोग करता हूं

; jch ~ Sweet analizer at https://xdebug.org/wizard.php for matching xdebug to php version.
; jch ~ When upgrading php versions check if newer xdebug.dll is needed in ext directory.
; jch Renamed... zend_extension = E:\x64Stack\PHP\php7.2.4\ext\php_xdebug-2.6.0-7.2-vc15-x86_64.dll

zend_extension = E:\x64Stack\PHP\php7.2.4\ext\php_xdebug.dll

; jch !!!! Added the following for Xdebug with PhpStorm

[Xdebug]
; zend_extension=<full_path_to_xdebug_extension>
; xdebug.remote_host=<the host where PhpStorm is running (e.g. localhost)>
; xdebug.remote_port=<the port to which Xdebug tries to connect on the host where PhpStorm is running (default 9000)>

xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000

xdebug.profiler_enable=1
xdebug.profiler_output_dir="E:\x64Stack\Xdebug_profiler_output"
xdebug.idekey=PHPSTORM
xdebug.remote_autostart=1

; jch ~~~~~~~~~To turn Xdebug off(disable) uncomment the following 3 lines restart Apache~~~~~~~~~ 
;xdebug.remote_autostart=0  
;xdebug.remote_enable=0
;xdebug.profiler_enable=0

; !!! Might get a little more speed by also commenting out this line above... 
;;; zend_extension = E:\x64Stack\PHP\php7.2.4\ext\php_xdebug.dll
; so that Xdebug is both disabled AND not loaded

1

PHPStorm से प्रेरित होकर एक फ़ाइल पर क्लिक करें -> डिबग -> ...

www-data@3bd1617787db:~/symfony$ 
php 
-dxdebug.remote_enable=0 
-dxdebug.remote_autostart=0 
-dxdebug.default_enable=0 
-dxdebug.profiler_enable=0 
test.php

महत्वपूर्ण सामान है -dxdebug.remote_enable=0 -dxdebug.default_enable=0


1

मैंने xdebug को टॉगल करने के लिए यह बैश स्क्रिप्ट बनाई। मुझे लगता है कि इसे कम से कम उबंटू / डेबियन पर काम करना चाहिए। यह PHP7 + के लिए है। PHP5 के लिए php5dismod / php5enmod का उपयोग करें।

#!/bin/bash

#
# Toggles xdebug
#

if [ ! -z $(php -m | grep "xdebug") ] ; then
    phpdismod xdebug
    echo "xdebug is now disabled"
else
    phpenmod xdebug
    echo "xdebug is now enabled"
fi

# exit success
exit 0

1

केवल कुछ PHP संस्करण या sapi के लिए xdebug अक्षम करें। इस मामले पर PHP 7.2 fpm

sudo phpdismod -v 7.2 -s fpm xdebug
sudo service php7.2-fpm nginx restart
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.