Cách tắt XDebug


124

Tôi nghĩ rằng máy chủ của tôi đã trở nên chậm chạp kể từ khi tôi cài đặt XDebug. Vì vậy, để kiểm tra giả thuyết của mình, tôi muốn vô hiệu hóa hoàn toàn XDebug. Tôi đã tìm kiếm các hướng dẫn về cách làm điều này nhưng tôi không thể tìm thấy thông tin như vậy.

Câu trả lời:


163

Tìm của bạn php.inivà tìm XDebug.

Đặt tự động khởi động xdebug thành false

xdebug.remote_autostart=0  
xdebug.remote_enable=0

Vô hiệu hóa hồ sơ của bạn

xdebug.profiler_enable=0

Lưu ý rằng có thể bị mất hiệu suất ngay cả khi xdebug bị vô hiệu hóa nhưng được tải . Để tắt tải chính phần mở rộng, bạn cần phải nhận xét nó trong php.ini của mình. Tìm một mục giống như thế này:

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

và đặt một ;để nhận xét nó, ví dụ ;zend_extension = ….

Kiểm tra bài đăng này XDebug, làm thế nào để vô hiệu hóa gỡ lỗi từ xa cho một tệp .php?


Cảm ơn! Tôi thấy rằng vấn đề của tôi là APC, bộ nhớ của tôi dường như thấp. Bạn nói đúng, xdebug là một phần của PHP, không phải là một mô-đun của Apache. Bây giờ mọi thứ đang chạy tốt.
Beto Aveiga

1
@Uday và điều gì sẽ xảy ra nếu tôi không thể tìm thấy bất kỳ điều này trong php.ini của mình. Tôi đã kiểm tra mọi nơi bên trong / etc / php kể cả với tìm kiếm grep.
Haralan Dobrev

@HaralanDobrev Kiểm tra phpinfo () để xem xdebug có thực sự được bật hay không. nếu có, hãy kiểm tra xem bạn có bất kỳ tệp ini bổ sung nào được đính kèm vào tệp php.ini không. Ngoài ra, hãy đảm bảo rằng bạn đang chỉnh sửa tệp ini chính xác. có thể có các tệp này ở nhiều vị trí.
Uday Sawant

18
@UdaySawant Tôi đã có thể vô hiệu hóa nó sau khi nhận xét dòng zend_extension=/usr/lib/php5/20090626+lfs/xdebug.sotừ /etc/php5/conf.d/xdebug.ini. Tuy nhiên, cả dòng trong /usr/lib/php5/etcdòng được chỉ định trong câu trả lời đều không có sẵn.
Haralan Dobrev

5
Trên thực tế, tốt hơn là không tải tiện ích mở rộng nào và chỉ tải nó, nếu cần. XDebug thực sự làm mọi thứ chậm lại rất nhiều, ngay cả khi bị vô hiệu hóa. Người ta có thể không cảm thấy hiệu suất bị giảm sút nhiều như vậy, khi gỡ lỗi / cấu hình một số tập lệnh tạo trang web, nhưng với tập lệnh daemon, nó hiển thị rất nhiều. Tôi chỉ viết một bài viết trên blog về việc tại sao không tải nó ở tất cả, là tốt hơn, ở đây: bit.ly/14SaWpp
thesilentman

99

Một giải pháp dễ dàng làm việc trên các bản phân phối Linux tương tự như Ubuntu

sudo php5dismod xdebug
sudo service apache2 restart

10
Bạn có thể vui lòng giải thích thêm câu trả lời của mình bằng cách thêm một chút mô tả về giải pháp bạn cung cấp không?
abarisone

3
Lệnh đó dành cho ubuntu không phải centOS. Nên cung cấp lời giải thích đó vì bạn không phải là người duy nhất sử dụng cùng một bản phân phối linux.
MaXi32

1
cái này dành cho apache2 chứ không phải cho CLI. Đây có thể có các tệp php.ini khác nhau
Adib Aroui

6
Tùy thuộc vào phiên bản PHP của bạn, bạn nên nhập$ sudo phpdismod xdebug
RousseauAlexandre

2
Câu trả lời này chỉ áp dụng cho PHP khi nó được sử dụng với mod-php của Apache.
John Hunt

35

Trong bản phân phối Linux Ubuntu ( cũng có thể khác - nó chưa được thử nghiệm ) với PHP 5 trên bo mạch, bạn có thể sử dụng:

sudo php5dismod xdebug

Và với PHP 7

sudo phpdismod xdebug

Và sau đó, hãy khởi động lại máy chủ:

sudo service apache2 restart

Tôi tin rằng PHP 7 đã xóa xdebug khỏi tệp ini. Vì vậy, câu trả lời này đã giúp tôi.
Keith Holliday

1
Làm việc cho PHP7. Nhận xét các cài đặt xdebug trong php.ini không hoạt động.
Kalob Taulien

1
Không hoạt động. CẢNH BÁO: Tệp ini của mô-đun
xdebug

25

Ngoài ra, bạn có thể thêm xdebug_disable()vào mã của mình. Thử:

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


32
Điều này chỉ vô hiệu hóa hiển thị stacktraces, nó không thực sự vô hiệu hóa Xdebug (khủng khiếp tên là chức năng, tôi biết)
BlueRaja - Danny Pflughoeft

Đây là một cách tuyệt vời để đối phó với nhiều tình huống. Cảm ơn vì điều này ngay cả khi nó không thực sự phù hợp với nhu cầu của OP.
Jake

3
@Jake, tôi không chắc OP đang tìm một người bán thịt.
thephpdev 14/09/16

1
@Jake hehe. Dù sao cũng chỉ đùa thôi. 😛
thephpdev 14/09/2016

1
@BinarWeb vì mọi người có thể nghĩ rằng chức năng này vô hiệu hóa toàn bộ xdebug và cải thiện hiệu suất, nhưng không phải vậy
Fogus

12

Tôi đã đổi tên tệp cấu hình và khởi động lại máy chủ:

$ 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

Nó đã làm việc cho tôi.


Điều này đã hiệu quả với tôi, ngoại trừ trong /etc/php/7.0/cli/conf.d thay vì /etc/php/7.0/fpm/conf.d
Sẽ

Điều này cũng sẽ hoạt động trên php 7.2,9 trên mac osx hoặc trên centos vagrant. Chỉ cần đổi tên để xdebug.ini để xdebug.ini.old hay cái gì khác
vknyvz

Đây là nó trưởng
Micheal C Wallas

10

Phần mở rộng nhận xét trong php.ini và khởi động lại Apache. Đây là một tập lệnh đơn giản (bạn có thể gán phím tắt cho nó)

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');

Để thực sự vô hiệu hóa hoàn toàn XDebug, đây là câu trả lời chính xác, hãy xem nhận xét của tôi trong câu trả lời của @ UdaySawant.
thesilentman

8

trong xubuntu, tôi hoàn toàn vô hiệu hóa xdebug cho CLI với điều này ...

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

lưu ý: điều này thực sự giúp tôi cập nhật nhà soạn nhạc. cần thiết để tắt xdebug đối với các vấn đề về hiệu suất.
Artistan

3
cái này cũng có tác dụng với laravel homestead. để Xdebug vô hiệu hóa trong homestead / laravel chỉ đơn giản là nhận xét ra phần trong file/etc/php5/cli/conf.d/20-xdebug.ini
ulkas

Đáng nói hơn nếu bạn chạy tập lệnh php từ thiết bị đầu cuối chạy tập lệnh php khác từ thiết bị đầu cuối thông qua passthruchức năng có bật xdebug, xdebug có thể bị treo và ngừng thực thi.
Gherman

1
Không chắc chắn downvote dùng để làm gì, đây có vẻ là cách duy nhất để tắt xdebug cho CLI chứ không phải các môi trường khác. Mặc dù tôi sẽ sử dụng unlinkhết rmnếu nó có sẵn.
Andy

4
Tôi sẽ không rm / hủy liên kết ini, thay vào đó làm như ulkas đề xuất sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.inivà nhận xét nó ra.
Justin

7

Trên Windows (WAMP) trong tệp CLI ini:

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

dòng bình luận

; XDEBUG Extension

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

Apache sẽ xử lý xdebug, còn nhà soạn nhạc thì không.


4

Hai lựa chọn:

1: Thêm mã sau vào Script khởi tạo:

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

2: Thêm cờ sau vào php.ini

 xdebug.remote_autostart=0
 xdebug.remote_enable=0

Tùy chọn đầu tiên được khuyến khích.


4

Tìm PHP.ini của bạn và tìm XDebug.

thông thường trong Ubuntu đường dẫn của nó là

/etc/php5/apache2/php.ini  

Thực hiện các thay đổi sau (Tốt hơn là chỉ nhận xét chúng bằng cách thêm; ở đầu)

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

sau đó khởi động lại máy chủ của bạn cho Ubuntu

sudo service apache2 restart

4

Tắt xdebug

Đối với PHP 7: sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.ini

Đối với PHP 5: sudo nano /etc/php5/cli/conf.d/20-xdebug.ini

Sau đó nhận xét mọi thứ và lưu lại.


CẬP NHẬT - Chỉ tắt cho CLI

Theo nhận xét của @ igoemon, đây là một phương pháp tốt hơn:

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

Lưu ý: Cập nhật đường dẫn đến phiên bản PHP của bạn.


Đây không phải là một giải pháp, bởi vì /etc/php/7.0/cli/conf.d/20-xdebug.ini chỉ là một liên kết tượng trưng và nếu bạn chỉnh sửa nó, bạn sẽ chỉnh sửa tệp gốc, thông thường cho cli và không cli. Tôi nghĩ giải pháp đơn giản là xóa liên kết biểu tượng.
igoemon

Cập nhật câu trả lời ^.
Justin

4

Ubuntu 16.04 loại bỏ xdebug khỏi PHP.

Tìm tệp php.ini của bạn và đảm bảo xdebug ở đó:

grep -r "xdebug" /etc/php/

Điều này có thể xuất hiện với các phiên bản khác nhau, nếu có hãy chạy php -vđể tìm phiên bản của bạn.

Chỉnh sửa tệp php.ini, như:

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

Nhận xét dòng:

//zend_extension=xdebug.so

Lưu các tập tin


Có, bạn chắc chắn cần lệnh đầu tiên để tìm ra tất cả các cấu hình xdebug (sai) mà bạn đã làm. Cảm ơn!
Aaron Liu

4

Nếu bạn đang sử dụng php-fpmnhững điều sau đây là đủ:

sudo phpdismod xdebug
sudo service php-fpm restart

Lưu ý rằng bạn sẽ cần phải tinh chỉnh điều này tùy thuộc vào phiên bản php của bạn. Ví dụ: chạy php 7.0, bạn sẽ làm:

sudo phpdismod xdebug
sudo service php7.0-fpm restart

Vì bạn đang chạy php-fpm nên không cần khởi động lại máy chủ web thực. Trong mọi trường hợp, nếu bạn không sử dụng fpm thì bạn chỉ cần khởi động lại máy chủ web của mình bằng bất kỳ lệnh nào dưới đây:

sudo service apache2 restart
sudo apache2ctl restart

3

Tôi đã gặp phải một vấn đề tương tự. Đôi khi, bạn sẽ không tìm thấy xdebug.so trong php.ini. Trong trường hợp đó, hãy thực thi phpinfo()trong tệp php và kiểm tra Additional .ini files parsed. Tại đây, bạn sẽ thấy nhiều tệp ini hơn. Một trong số này sẽ là tệp ini của xdebug. Chỉ cần xóa (hoặc đổi tên) tệp này, khởi động lại apache và phần mở rộng này sẽ bị xóa.


3

Tôi gặp sự cố sau: Ngay cả khi tôi đặt

xdebug.remote_enable=0 

Xdebug-Lỗi-Thông báo-Trang trí đã được hiển thị.

Giải pháp của tôi:

xdebug.default_enable=0

Chỉ khi tôi sử dụng Flag này, Xdebug đã bị vô hiệu hóa.


3

(Cái này dành cho CentOS)

Đổi tên tệp cấu hình và khởi động lại apache.

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

Làm ngược lại để kích hoạt lại.


1

Nếu bạn đang sử dụng MAMP Pro trên Mac OS X, quá trình này được thực hiện thông qua ứng dụng khách MAMP bằng cách bỏ chọn Kích hoạt Xdebug trong tab PHP :

Tắt Xdebug trong MAMP Pro


1

Vì vậy, vâng, tất cả những gì bạn cần, chỉ cần dòng bình luận trong tệp INI giống zend_extension=xdebug.sohoặc tương tự.

Nhận xét có thể được thực hiện bằng cách thêm dấu chấm phẩy.

Nhưng, loại câu trả lời như vậy đã được thêm vào và tôi muốn chia sẻ giải pháp sẵn sàng để chuyển trạng thái Xdebug.

Tôi đã thực hiện chuyển đổi nhanh cho Xdebug. Có lẽ nó sẽ hữu ích cho ai đó.

Trình chuyển đổi Xdebug


1

Đối với WAMP, nhấp chuột trái vào biểu tượng Wamp trên khay thanh tác vụ. Di chuột qua PHP, sau đó nhấp vào php.ini và mở nó trong texteditor của bạn.

Bây giờ, hãy tìm kiếm cụm từ 'zend_extension' và thêm; (dấu chấm phẩy) ở phía trước nó.

Khởi động lại WAMP và bạn đã sẵn sàng.


1

Apache / 2.4.33 (Win64) PHP / 7.2.4 myHomeBrew ngăn xếp

Ở cuối php.ini, tôi sử dụng phần sau để quản lý Xdebug để sử dụng với 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

Lấy cảm hứng từ PHPStorm, nhấp chuột phải vào tệp -> gỡ lỗi -> ...

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

điều quan trọng là -dxdebug.remote_enable=0 -dxdebug.default_enable=0


1

Tôi đã tạo tập lệnh bash này để chuyển đổi xdebug. Tôi nghĩ rằng nó sẽ hoạt động ít nhất trên Ubuntu / Debian. Đây là dành cho PHP7 +. Đối với PHP5, hãy sử dụng 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

Chỉ tắt xdebug cho một số phiên bản PHP hoặc sapi nhất định. Trong trường hợp này, PHP 7.2 fpm

sudo phpdismod -v 7.2 -s fpm xdebug
sudo service php7.2-fpm nginx restart
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.