XDebug를 비활성화하는 방법


124

XDebug를 설치 한 이후 서버가 느려진 것 같습니다. 따라서 내 가설을 테스트하기 위해 XDebug를 완전히 비활성화하고 싶습니다. 이 작업을 수행하는 방법에 대한 자습서를 검색했지만 해당 정보를 찾을 수 없습니다.

답변:


163

php.iniXDebug를 찾아보세요 .

xdebug 자동 시작을 false로 설정

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 파일에 대한 원격 디버깅을 비활성화하는 방법을 확인하십시오 .


감사! 내 문제는 APC이고 내 기억력은 분명히 낮다는 것을 알았습니다. xdebug는 Apache의 모듈이 아니라 PHP의 일부입니다. 이제 모든 것이 잘 돌아가고 있습니다.
Beto Aveiga

1
@Uday와 내 php.ini에서 이것 중 하나를 찾을 수 없으면 어떻게해야합니까? grep 검색을 포함하여 / etc / php 내부의 모든 곳을 확인했습니다.
Haralan Dobrev 2013

@HaralanDobrev phpinfo ()를 확인하여 xdebug가 실제로 활성화되어 있는지 확인합니다. 그렇다면 php.ini 파일에 추가 ini 파일이 첨부되어 있는지 확인하십시오. 또한 올바른 ini 파일을 편집하고 있는지 확인하십시오. 이러한 파일을 여러 위치에 둘 수 있습니다.
Uday Sawant 2013 년

18
@UdaySawant에서 줄 zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so을 주석 처리 한 후 비활성화 할 수있었습니다 /etc/php5/conf.d/xdebug.ini. 그러나 대답에 지정된 줄 /usr/lib/php5이나 /etc줄을 사용할 수 없습니다.
Haralan Dobrev 2013

5
실제로 확장 프로그램을 전혀로드하지 않고 필요한 경우에만로드하는 것이 좋습니다. XDebug는 실제로 비활성화 된 경우에도 많은 속도를 늦 춥니 다. 웹 페이지를 만드는 일부 스크립트를 디버깅 / 프로파일 링 할 때 성능이 크게 저하되었다고 느끼지 않을 수도 있지만 데몬 스크립트를 사용하면 많은 것을 보여줍니다. 나는 방금 그것을 전혀로드하지 않는 이유에 대한 블로그 게시물을 썼습니다. 여기에 bit.ly/14SaWpp
thesilentman

99

Ubuntu와 유사한 Linux 배포판에서 작동하는 쉬운 솔루션

sudo php5dismod xdebug
sudo service apache2 restart

10
제공하는 솔루션에 대한 설명을 추가하여 답변을 더 자세히 설명해 주시겠습니까?
abarisone 2015-04-13

3
이 명령은 centOS가 아닌 우분투를위한 것입니다. 동일한 Linux 배포판을 사용하는 유일한 사람이 아니기 때문에 설명을 제공해야합니다.
MaXi32

1
이것은 CLI가 아닌 apache2를위한 것입니다. 이들은 다른 php.ini의 파일이있을 수 있습니다
아디 브 Aroui에게

6
당신의 PHP 버전의 따라 입력해야합니다$ sudo phpdismod xdebug
RousseauAlexandre

2
이 답변은 Apache의 mod-php와 함께 사용되는 경우에만 PHP에 적용됩니다.
존 헌트

35

에서 리눅스 우분투 ( - 어쩌면 또 다른이 테스트 아니에요 과) 유통 PHP 5 보드에, 당신은 사용할 수 있습니다 :

sudo php5dismod xdebug

그리고 PHP 7

sudo phpdismod xdebug

그 후 서버를 다시 시작하십시오.

sudo service apache2 restart

PHP 7은 ini 파일에서 xdebug를 제거했다고 믿습니다. 그래서이 대답이 도움이되었습니다.
Keith Holliday 2016

1
PHP7에서 작동했습니다. php.ini에서 xdebug 설정을 주석 처리하는 것이 작동하지 않았습니다.
Kalob Taulien

1
작동하지 않았습니다. 경고 : 모듈 xdebug ini 파일이 /etc/php/7.1/mods-available 아래에 존재하지 않습니다
dxvargas

25

또한 xdebug_disable()코드에 추가 할 수 있습니다 . 시험:

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


32
스택 추적을 표시이 단지 비활성화, 그것은 실제로 사용하지 않도록 Xdebug는 (정말 내가 알고있는 함수 이름) 않습니다
BlueRaja - 대니 Pflughoeft

이것은 많은 상황을 처리하는 멋진 방법입니다. 정말 고기 OP가 필요하지 않더라도 감사합니다.
Jake

3
@Jake, OP가 정육점을 찾고 있는지 확실하지 않습니다.
thephpdev

1
@Jake hehe. 어쨌든 농담이었습니다. 😛
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/fpm/conf.d 대신 /etc/php/7.0/cli/conf.d
Will

이것은 또한 mac osx 또는 centos vagrant의 php 7.2,9에서도 작동합니다. xdebug.ini로 xdebug.ini.old 또는 다른 이름으로 이름을 변경하십시오
vknyvz

이것이 최고입니다
Micheal C Wallas

10

php.ini에서 확장자를 주석으로 처리하고 Apache를 다시 시작하십시오. 다음은 간단한 스크립트입니다 (바로 가기를 지정할 수 있음).

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를 비활성화하는 데 필요합니다.
Artistan 2014 년

3
이것은 laravel 농가에서도 작동합니다. 농가에서 해제 Xdebug는에 / laravel 단순히 파일의 섹션을 주석/etc/php5/cli/conf.d/20-xdebug.ini
ulkas

passthruxdebug가 활성화 된 기능을 통해 터미널에서 다른 PHP 스크립트를 실행하는 터미널에서 php 스크립트를 실행 하면 xdebug가 중단되고 실행이 중지 될 수 있습니다.
Gherman 2015-04-09

1
반대 투표가 무엇인지 확실하지 않은 경우 이것은 다른 환경이 아닌 CLI에 대해 xdebug를 비활성화하는 유일한 방법 인 것으로 보입니다. 내가 사용하는 거라고하지만 unlink이상 rm이 사용할 수있는 경우.
Andy

4
나는 ini를 rm / unlink하지 않고 대신 ulkas가 제안한대로 sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.ini하고 주석 처리합니다.
저스틴

7

Windows (WAMP)의 CLI ini 파일 :

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"

Apache는을 처리 xdebug하고 composer는 처리하지 않습니다.


4

두 가지 옵션 :

1 : 초기화 스크립트에 다음 코드를 추가합니다.

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

2 : php.ini에 다음 플래그 추가

 xdebug.remote_autostart=0
 xdebug.remote_enable=0

첫 번째 옵션이 권장됩니다.


4

PHP.ini를 찾고 XDebug를 찾으십시오.

일반적으로 Ubuntu에서 경로는

/etc/php5/apache2/php.ini  

다음과 같이 변경합니다 (시작 부분에;을 추가하여 주석을 추가하는 것이 좋습니다).

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

그런 다음 Ubuntu를 위해 서버를 다시 시작하십시오.

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

그런 다음 모든 것을 주석 처리하고 저장하십시오.


UPDATE-CLI 전용 비활성화

@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에 공통적 인 원본 파일을 편집하므로 솔루션이 아닙니다. 올바른 해결책은 symlink를 삭제하는 것입니다.
igoemon

업데이트 된 답변 ^.
저스틴

4

Ubuntu 16.04는 PHP에서 xdebug를 제거합니다.

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 구성을 찾으려면 첫 번째 명령이 필요합니다. 감사!
Aaron Liu

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. 여기에 더 많은 ini 파일이 표시됩니다. 이 중 하나는 xdebug의 ini 파일입니다. 이 파일을 제거 (또는 이름 변경)하고 아파치를 다시 시작하면이 확장이 제거됩니다.


3

나는 다음과 같은 문제가 있었다 : 내가 설정하더라도

xdebug.remote_enable=0 

Xdebug-Error-Message-Decoration이 표시되었습니다.

내 솔루션 :

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 Pro를 사용 하는 경우 PHP 탭에서 Xdebug 활성화 를 선택 취소하여 MAMP 클라이언트를 통해 수행됩니다 .

MAMP Pro에서 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 끝에서 PhpStorm과 함께 사용할 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를 토글하기 위해이 bash 스크립트를 만들었습니다. 적어도 Ubuntu / Debian에서 작동해야한다고 생각합니다. 이것은 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.