Xdebug: [Step Debug] Tidak dapat terhubung ke klien debugging
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
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
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