Як відключити XDebug


124

Я думаю, що мій сервер став повільним з моменту встановлення XDebug. Отже, щоб перевірити свою гіпотезу, я хочу повністю відключити XDebug. Я шукав підручники, як це зробити, але не можу знайти таку інформацію.

Відповіді:


163

Знайдіть свій php.iniі шукайте XDebug.

Встановіть 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 - це частина PHP, а не модуль Apache. Зараз все працює нормально.
Beto Aveiga

1
@Uday, і що, якщо я не можу знайти нічого з цього в моєму php.ini. Я перевіряв всюди всередині / etc / php, включаючи пошук grep.
Харалан Добрев

@HaralanDobrev Перевірте phpinfo (), щоб побачити, чи дійсно ввімкнено xdebug. якщо це так, перевірте, чи є додаткові файли ini, приєднані до файлу php.ini. Крім того, переконайтесь, що ви редагуєте правильний файл ini. ці файли можна мати у кількох місцях.
Uday Sawant

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

Просте рішення, що працює над дистрибутивами Linux, схожими на Ubuntu

sudo php5dismod xdebug
sudo service apache2 restart

10
Чи можете ви детальніше розглянути свою відповідь, додавши трохи більше опису про рішення, яке ви надаєте?
аборисон

3
Ця команда призначена для ubuntu, а не centOS. Слід пояснити це тим, що ви не єдиний користувач, який використовує той самий дистрибутив Linux.
MaXi32

1
це для apache2, а не для CLI. У них можуть бути різні файли php.ini
Адіб Аруй

6
Залежно від вашої версії PHP, вам слід ввести$ sudo phpdismod xdebug
RousseauAlexandre

2
Ця відповідь стосується PHP лише тоді, коли він використовується з mod-php Apache.
Джон Хант

35

У Linux Ubuntu ( можливо, і інший - це не перевірено ) дистрибутивом з PHP 5 на борту ви можете використовувати:

sudo php5dismod xdebug

І з PHP 7

sudo phpdismod xdebug

Після цього перезавантажте сервер:

sudo service apache2 restart

PHP 7 видалив xdebug з ini-файлу, я вважаю. Тож ця відповідь мені допомогла.
Кіт Холлідей

1
Працював для PHP7. Коментувати налаштування xdebug у php.ini не вийшло.
Kalob Taulien

1
Не працювало. ПОПЕРЕДЖЕННЯ: Файл inde модуля xdebug не існує в /etc/php/7.1/mods-available
dxvargas

25

Також ви можете додати xdebug_disable()до свого коду. Спробуйте:

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


32
Це лише вимикає показ стек-треків, він фактично не вимикає xdebug (я знаю жахливо названу функцію)
BlueRaja - Danny Pflughoeft

Це приголомшливий спосіб вирішити безліч ситуацій. Дякую за це, навіть якщо це насправді не потребує ОП.
Джейк

3
@Jake, я не впевнений, що ОП шукала м'ясника.
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/cli/conf.d замість /etc/php/7.0/fpm/conf.d
Вілл

Це також буде працювати на php 7.2,9 на mac osx або на centos vagrant. Просто перейменуйте в 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 я повністю відключив xdebug для CLI за допомогою цього ...

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

Зауважте: це дійсно допомогло мені оновити композитор. необхідний для вимкнення xdebug для проблем із продуктивністю.
Артистан

3
це працює і для садиби ларавела. щоб відключити xdebug у садибі / laravel, просто прокоментуйте розділ у файлі/etc/php5/cli/conf.d/20-xdebug.ini
ulkas

Варто згадати, якщо запустити скрипт php з терміналу, який запускає інший скрипт php з терміналу через passthruфункцію з включеною функцією xdebug, xdebug може зависнути і зупинити виконання.
Герман

1
Не впевнений, для чого був потік, це, здається, єдиний спосіб відключити xdebug для CLI, а не інших середовищ. Хоча я хотів би використовувати unlinkбільш , rmякщо він доступний.
Енді

4
Я б не rm / unlink ini, а робив так, як запропонував 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, а композитор - ні.


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.

зазвичай в 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

Потім прокоментуйте все і заощадьте.


ОНОВЛЕННЯ - Вимкнути лише для 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. Я думаю, що правильне рішення - це просто видалити симпосилання.
igoemon

Оновлена ​​відповідь ^.
Джастін

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

Я зіткнувся з подібним питанням. Іноді ви не знайдете xdebug.so у php.ini. У такому випадку виконати phpinfo()у файлі php та перевірити Additional .ini files parsed. Тут ви побачите більше файлів ini. Одним із них буде inde файл xdebug. Просто видаліть (або перейменуйте) цей файл, перезапустіть apache, і це розширення буде видалено.


3

У мене була така проблема: Навіть якщо я встановив

xdebug.remote_enable=0 

Було показано Xdebug-Error-Message-Decoration.

Моє рішення:

xdebug.default_enable=0

Тільки якщо я використовую цей прапор, Xdebug було відключено.


3

(Це для CentOS)

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

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

Виконайте зворотний бік, щоб повторно включити


1

Якщо ви використовуєте MAMP Pro на Mac OS X, це робиться через клієнт MAMP, знявши прапорець Активувати Xdebug на вкладці PHP :

Вимкнення Xdebug в MAMP Pro


1

Отже, так, все, що вам потрібно, просто коментуйте рядок у файлі INI, подібний zend_extension=xdebug.soабо подібний.

Коментарі можна робити, додаючи крапку з комою.

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

Я зробив швидкий перемикач для Xdebug. Можливо, комусь це було б корисно.

Xdebug Switcher


1

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

Тепер знайдіть фразу 'zend_extension' та додайте; (крапка з комою) перед ним.

Перезапустіть WAMP, і ви готові йти.


1

Apache / 2.4.33 (Win64) PHP / 7.2.4 myHomeBrew стек

В кінці 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

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

Я створив цей скрипт bash для перемикання xdebug. Я думаю, що це має працювати принаймні на 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

Вимкнути xdebug лише для певної версії PHP або sapi. У цьому випадку PHP 7,2 fpm

sudo phpdismod -v 7.2 -s fpm xdebug
sudo service php7.2-fpm nginx restart
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.