Xdebug: [Step Debug] Tidak dapat terhubung ke klien debugging

Nov 17 2020

Saya ingin mencoba Xdebug 3.0.0RC1 untuk menjelajahi apa yang telah berubah dan fitur baru yang menyertainya. Saya juga menggunakan PhpStorm 2020.3 EAP terbaru yang mendukung Xdebug 3 tanpa memerlukan konfigurasi utama. Di bawah ini adalah konfigurasi PhpStorm saya untuk Debugger:

Dan berikut adalah konfigurasi yang telah saya coba untuk Xdebug3:

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal # here I tried several combinations like: "localhost", "127.0.0.1", "172.17.0.1"
xdebug.client_port=9001 # here I tried several ports 9003 included with no success

Saya juga mencoba untuk tidak menambahkan client_host/client_portpengaturan sama sekali dan masih gagal.

Saya mendapatkan kesalahan ini:

Script php bin/console doctrine:cache:clear-metadata returned with error code 255
!!  [17-Nov-2020 15:24:40 UTC] Xdebug: [Step Debug] Could not connect to debugging client. Tried: host.docker.internal:9001 (through xdebug.client_host/xdebug.client_port) :-(
!!  [17-Nov-2020 15:24:41 UTC] PHP Fatal error:  Method class@anonymous::__toString() must not throw an exception, caught Symfony\Component\DependencyInjection\Exception\AutowiringFailedException:  in /var/www/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php on line 233

Beberapa info tentang lingkungan saya:

  • Fedora 33
  • Docker versi 19.03.13, build 4484c46d9d
  • PhpStorm 2020.3 EAP Build # PS-203.5784.36

Ini aneh (karena tampaknya host.docker.internal"tidak" didukung oleh versi Docker yang saya gunakan namun berfungsi) dan aneh pada saat yang sama bahwa konfigurasi berikut bekerja dengan Xdebug 2 bahkan memiliki debugger mendengarkan koneksi masuk sepanjang waktu:

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.remote_autostart=0
xdebug.remote_enable=1
xdebug.remote_host=host.docker.internal
xdebug.remote_port=9000

Apa yang saya lewatkan di sini?

Catatan: Saya sudah menerapkan solusi yang disediakan oleh pengembang Xdebug di sini .

Jawaban

6 AGriboed Dec 18 2020 at 17:26

PHP 7.4
Docker
PHPStorm 2020.1
Xdebug 3.1.0

Instal Xdebug di container docker Anda menggunakan Dockerfile

RUN pecl install xdebug-3.0.1 && docker-php-ext-enable xdebug

Konfigurasikan php.ini dengan yang berikut:

[xdebug]
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.discover_client_host = 1

Buka PHPStorm - Pengaturan - PHP - Debug - Xdebug dan atur port ke 9003 (secara default)

PHPStorm

Itu dia (:

Jika Anda ingin mengaktifkan / menonaktifkan debugger hanya saat Anda membutuhkannya: cukup instal ekstensi browser yang disebut "Xdebug helper", pilih "Debug" dan hapus "xdebug.start_with_request = yes" dari php.ini

[xdebug]
xdebug.mode = debug
xdebug.discover_client_host = 1
1 ReynierPM Nov 18 2020 at 02:01

Saya akan mulai mengucapkan banyak terima kasih kepada @LazyOne yang telah meluangkan waktu untuk membantu saya dalam hal ini sampai kami berhasil. Berikut adalah tampilan konfigurasi untuk saya saat ini dan berfungsi dengan baik:

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.mode=debug
xdebug.client_port=9005

Anda juga perlu memperbarui port Xdebug di File | Settings | Languages & Frameworks | PHP | Serversuntuk mencerminkan yang baru, tetapi juga mengaktifkan opsi untuk mendengarkan pada koneksi masuk Xdebug3. (Saya yakin ini diaktifkan secara default di PhpStorm 2020.3)

Itu adalah pengaturan untuk proyek backend di mana tidak ada browser di tengahnya, saya belum mencoba tetapi untuk itu, Anda mungkin perlu:

xdebug.start_with_request=yes

Dan juga telah File | Settings | Languages & Frameworks | PHP | Serversdikonfigurasi dengan baik.

Catatan: Kami menemukan host telah diaktifkan IPv6 dan saya dinonaktifkan dan di samping itu, tambah pengaturan berikut untuk IDE melalui Help > Edit Custom VM options: -Djava.net.preferIPv4Stack=true. Setelah menambahkan pengaturan IP4 ke IDE, saya belum mencoba mengaktifkan kembali IPv6 dan melihat apakah Xdebug 3 masih berfungsi