ฉันคิดว่าเซิร์ฟเวอร์ของฉันช้าตั้งแต่ฉันติดตั้ง XDebug ดังนั้นเพื่อทดสอบสมมติฐานของฉันฉันต้องการปิดการใช้งาน XDebug อย่างสมบูรณ์ ฉันค้นหาแบบฝึกหัดเกี่ยวกับวิธีการนี้ แต่ไม่พบข้อมูลดังกล่าว
ฉันคิดว่าเซิร์ฟเวอร์ของฉันช้าตั้งแต่ฉันติดตั้ง XDebug ดังนั้นเพื่อทดสอบสมมติฐานของฉันฉันต้องการปิดการใช้งาน XDebug อย่างสมบูรณ์ ฉันค้นหาแบบฝึกหัดเกี่ยวกับวิธีการนี้ แต่ไม่พบข้อมูลดังกล่าว
คำตอบ:
ค้นหาของคุณphp.iniและมองหา XDebug
ตั้งค่า xdebug autostart เป็น 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 เดียว
zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so /etc/php5/conf.d/xdebug.iniอย่างไรก็ตามไม่มีทั้งใน/usr/lib/php5หรือใน/etcบรรทัดที่ระบุไว้ในคำตอบ
โซลูชันง่ายๆที่ทำงานบน Linux ดิสทริบิวชันที่คล้ายกับ Ubuntu
sudo php5dismod xdebug
sudo service apache2 restart
$ sudo phpdismod xdebug
ใน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(); }
ฉันเปลี่ยนชื่อไฟล์กำหนดค่าและรีสตาร์ทเซิร์ฟเวอร์:
$ 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
มันได้ผลสำหรับฉัน
แสดงความคิดเห็นใน 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');
ใน xubuntu ฉันปิดการใช้งาน xdebug สำหรับ CLI โดยสิ้นเชิงด้วยสิ่งนี้ ...
sudo rm /etc/php5/cli/conf.d/*xdebug*
/etc/php5/cli/conf.d/20-xdebug.ini
passthruฟังก์ชันที่เปิดใช้งาน xdebug xdebug อาจหยุดทำงานและหยุดการดำเนินการ
unlinkมากกว่าrmถ้ามี
sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.iniและแสดงความคิดเห็นออกมา
บน 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แต่ผู้แต่งจะไม่ดำเนินการ
สองตัวเลือก:
1: เพิ่มรหัสต่อไปนี้ในสคริปต์การเริ่มต้น:
if (function_exists('xdebug_disable')) {
xdebug_disable();
}
2: เพิ่มแฟล็กต่อไปนี้ใน php.ini
xdebug.remote_autostart=0
xdebug.remote_enable=0
แนะนำตัวเลือกแรก
ค้นหา 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
สำหรับ 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 เวอร์ชันของคุณ
grep -r "xdebug" /etc/php/
ซึ่งอาจมาพร้อมกับเวอร์ชันที่แตกต่างกันหากเป็นเช่นนั้นให้รันphp -vเพื่อค้นหาเวอร์ชันของคุณ
sudo vi /etc/php/5.6/mods-available/xdebug.ini
//zend_extension=xdebug.so
หากคุณใช้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
ฉันพบปัญหาที่คล้ายกัน บางครั้งคุณจะไม่พบ xdebug.so ใน php.ini ในกรณีนี้ให้ดำเนินการphpinfo()ในไฟล์ php และตรวจสอบAdditional .ini files parsed. คุณจะเห็นไฟล์ ini เพิ่มเติม หนึ่งในนั้นจะเป็นไฟล์ ini ของ xdebug เพียงแค่ลบ (หรือเปลี่ยนชื่อ) ไฟล์นี้รีสตาร์ท apache และส่วนขยายนี้จะถูกลบออก
ฉันมีปัญหาต่อไปนี้: แม้ว่าฉันจะตั้งค่า
xdebug.remote_enable=0
แสดง Xdebug-Error-Message-Decoration
วิธีแก้ปัญหาของฉัน:
xdebug.default_enable=0
เฉพาะในกรณีที่ฉันใช้ค่าสถานะนี้ Xdebug ถูกปิดใช้งาน
(สำหรับ CentOS)
เปลี่ยนชื่อไฟล์ config และรีสตาร์ท apache
sudo mv /etc/php.d/xdebug.ini /etc/php.d/xdebug.ini.old
sudo service httpd restart
ทำย้อนกลับเพื่อเปิดใช้งานอีกครั้ง
หากคุณใช้ MAMP Pro บน Mac OS X สามารถทำได้ผ่านไคลเอนต์ MAMP โดยยกเลิกการเลือกActivate Xdebugใต้แท็บPHP :

ใช่สิ่งที่คุณต้องการเพียงแค่แสดงความคิดเห็นในไฟล์ INI เหมือนzend_extension=xdebug.soหรือคล้ายกัน
สามารถแสดงความคิดเห็นได้โดยเพิ่มเครื่องหมายอัฒภาค
แต่ได้มีการเพิ่มคำตอบดังกล่าวแล้วและฉันต้องการแบ่งปันโซลูชันที่พร้อมใช้งานเพื่อเปลี่ยนสถานะ Xdebug
ฉันได้สร้างตัวสลับด่วนสำหรับ Xdebug บางทีมันอาจจะมีประโยชน์สำหรับใครบางคน
สำหรับ WAMP ให้คลิกคลิกซ้ายที่ไอคอน Wamp ในถาดแถบงาน วางเมาส์เหนือ PHP แล้วคลิกที่ php.ini แล้วเปิดใน texteditor ของคุณ
ตอนนี้ค้นหาวลี 'zend_extension' และเพิ่ม; (อัฒภาค) อยู่ข้างหน้า
รีสตาร์ท WAMP เท่านี้ก็เรียบร้อย
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
แรงบันดาลใจจาก PHPStorm คลิกขวาที่ไฟล์ -> debug -> ...
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
ฉันสร้างสคริปต์ทุบตีนี้เพื่อสลับ 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
ปิดการใช้งาน xdebug สำหรับ PHP เวอร์ชันหรือ sapi บางรุ่นเท่านั้น ในกรณีนี้ PHP 7.2 fpm
sudo phpdismod -v 7.2 -s fpm xdebug
sudo service php7.2-fpm nginx restart