ฉันคิดว่าเซิร์ฟเวอร์ของฉันช้าตั้งแต่ฉันติดตั้ง 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