Как отключить XDebug
Я думаю, что мой сервер стал медленным с тех пор, как я установил XDebug. Итак, чтобы проверить свою гипотезу, я хочу полностью отключить XDebug. Я искал учебники о том, как это сделать, но не могу найти такую информацию.
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-нет.
Два варианта:
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:
Итак, да, все, что вам нужно, просто прокомментируйте строку в INI-файле, например
zend_extension=xdebug.so
или подобную.Комментарии можно сделать, добавив точку с запятой.
Но, такой ответ уже добавлен, и я хотел бы поделиться готовым решением для переключения статуса Xdebug.
Я сделал быстрый переключатель для Xdebug. Может быть, это кому-то и пригодится.
Для 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