Как отключить XDebug


Я думаю, что мой сервер стал медленным с тех пор, как я установил XDebug. Итак, чтобы проверить свою гипотезу, я хочу полностью отключить XDebug. Я искал учебники о том, как это сделать, но не могу найти такую информацию.

20 97

20 ответов:

Найдите свой php.ini и ищите XDebug.

Установите автостарт xdebug в false

xdebug.remote_autostart=0  
xdebug.remote_enable=0

Отключите свой профилировщик

xdebug.profiler_enable=0

Обратите внимание, что может быть потеря производительностидаже при отключенном xdebug, но загруженном . Чтобы отключить загрузку самого расширения, вам нужно прокомментировать его в вашем php.ини. Найдите запись, которая выглядит следующим образом:

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

И поставить ;, чтобы прокомментировать его, например ;zend_extension = ….

Проверьте этот пост XDebug, как отключить удаленную отладку для одиночный.php файл?

Простое решение, работающее на дистрибутивах Linux, подобных Ubuntu

sudo php5dismod xdebug
sudo service apache2 restart

В Linux Ubuntu(возможно и другое-это не тестируемый) дистрибутив с PHP 5 на борту, вы можете использовать:

sudo php5dismod xdebug

И с PHP 7

sudo phpdismod xdebug

И после этого, пожалуйста, перезагрузите сервер:

sudo service apache2 restart

Кроме того, вы можете добавить xdebug_disable() в свой код. Попробуйте:

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

Расширение комментариев в php.ini и перезапустить Apache. Вот простой скрипт (вы можете назначить ему ярлык)

Xdebug-переключатель.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');

Я переименовал конфигурационный файл и перезапустил сервер:

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

$ sudo service php7.0-fpm restart && sudo service nginx restart
Это действительно сработало для меня.

На 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-нет.

В xubuntu я полностью отключил xdebug для CLI с этим...

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

Два варианта:

1: добавьте следующий код в сценарий инициализации:

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

2: Добавьте следующий флаг в php.ini

 xdebug.remote_autostart=0
 xdebug.remote_enable=0

Рекомендуется 1-й вариант.

Найдите свой 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

Я столкнулся с подобной проблемой. Иногда, вы не найдете xdebug.so на php.ини. В этом случае выполните phpinfo() в файле php и проверьте наличие Additional .ini files parsed. Здесь вы увидите больше файлов ini. Одним из них будет ini-файл xdebug. Просто удалите (или переименуйте) этот файл, перезагрузите apache, и это расширение будет удалено.

У меня была следующая проблема: Даже если я установлю

xdebug.remote_enable=0 

Xdebug-Error-Message-Decoration был показан.

Мое решение:

xdebug.default_enable=0

Только если я использую этот флаг, Xdebug был отключен.

(это для CentOS)

Переименуйте конфигурационный файл и перезапустите apache.

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

Сделайте обратное, чтобы снова включить.

Отключить 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 -- Disable только для 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.

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

Сохраните файл

Если вы используете MAMP Pro на Mac OS X, это делается через клиент MAMP, сняв флажок активировать Xdebug на вкладке PHP:

Отключение Xdebug в MAMP Pro

Итак, да, все, что вам нужно, просто прокомментируйте строку в INI-файле, например zend_extension=xdebug.so или подобную.

Комментарии можно сделать, добавив точку с запятой.

Но, такой ответ уже добавлен, и я хотел бы поделиться готовым решением для переключения статуса Xdebug.

Я сделал быстрый переключатель для Xdebug. Может быть, это кому-то и пригодится.

Xdebug Switcher

Для WAMP щелкните левой кнопкой мыши на значке Wamp в трее панели задач. Наведите курсор на PHP, а затем нажмите на php.ini и откройте его в своем текстовом редакторе.

Теперь найдите фразу 'zend_extension' и добавьте ; (точка с запятой) перед ней.

Перезагрузите WAMP, и вы можете идти.

Если вы используете 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

Apache / 2.4.33 (Win64) PHP / 7.2.4 myhomebrew stack

В конце php.ini я использую следующее для управления Xdebug для использования с PhpStorm

; 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