Xdebug mempunyai sejarah mempunyai lengkung pembelajaran persediaan yang curam. Saya di sini untuk menunjukkan kepada anda bahawa menubuhkan Xdebug tidak perlu menyakitkan. Malah, saya yakin bahawa anda boleh mula menggunakan Xdebug dengan Docker dalam masa satu minit.
Ok, mungkin ia akan mengambil beberapa daripada anda beberapa minit :)Kami akan menunjukkan persediaan dengan Laravel, Php 8.4 dan Xdebug v3.4.0, versi stabil terkini pada masa penulisan.
inti dari apa yang kita perlukan untuk mendapatkan Xdebug dikonfigurasi dengan imej docker termasuk:
compose.yaml
kita akan mulakan dengan menubuhkan projek demo jika anda mahu mengikuti:
<!-- Syntax highlighted by torchlight.dev -->laravel new xdebug-demo --git --no-interaction cd xdebug-demo mkdir -p build/php/conf.d build/apache touch compose.yaml \ build/Dockerfile \ build/php/conf.d/xdebug.ini \ build/apache/vhost.conf
untuk mengkonfigurasi laluan akar web ke aplikasi kami. vhost.conf
anda: build/Dockerfile
<!-- Syntax highlighted by torchlight.dev -->FROM php:8.4-apache as base LABEL maintainer="Paul Redmond" RUN docker-php-ext-install pdo_mysql opcache && \ a2enmod rewrite negotiation COPY build/apache/vhost.conf /etc/apache2/sites-available/000-default.conf FROM base as development RUN cp $PHP_INI_DIR/php.ini-development $PHP_INI_DIR/php.ini COPY build/php/conf.d/xdebug.ini $PHP_INI_DIR/conf.d/xdebug.ini RUN pecl channel-update pecl.php.net && \ pecl install xdebug-3.4.0 && \ docker-php-ext-enable xdebug FROM base as app RUN cp $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini COPY . /srv/app
adalah tahap development
, yang mempunyai persediaan asas keperluan imej kami seperti sambungan PHP yang kami inginkan dalam base
mana -mana persekitaran dan mengkonfigurasi Apache.
menyalin versi pembangunan fail php.ini, menyalin konfigurasi development
yang akan memegang penyesuaian kami yang kami buat ke xdebug. Kami menggunakan xdebug.ini
yang mempunyai sokongan untuk Php 8.4 dan merupakan stabil terkini pada masa penulisan. v3.4.0
, yang mana imej permohonan kami akan digunakan dalam membina pengeluaran. Menggunakan sasaran app
Omits mengkonfigurasi XDebug dan menggunakan versi pengeluaran fail php.ini. app
, yang disalin ke dalam imej Docker untuk menunjuk kepada kod aplikasi: build/apache/vhost.conf
<!-- Syntax highlighted by torchlight.dev --><VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /srv/app/public <Directory "/srv/app/public"> AllowOverride all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
yang kami buat. Tambahkan yang berikut ke fail ini jika anda mengikuti: xdebug.ini
<!-- Syntax highlighted by torchlight.dev -->laravel new xdebug-demo --git --no-interaction cd xdebug-demo mkdir -p build/php/conf.d build/apache touch compose.yaml \ build/Dockerfile \ build/php/conf.d/xdebug.ini \ build/apache/vhost.conf
Penyesuaian kami diperlukan untuk menentukan hos pelanggan. Oleh kerana kami menggunakan rangkaian Docker, Xdebug perlu tahu bagaimana untuk berkomunikasi dengan mesin tuan rumah kami. Jika anda menggunakan desktop Docker, Docker mempunyai tuan rumah host.docker.internal
yang menunjuk ke komputer tuan rumah anda.
Jika tidak, anda perlu mencari IP rangkaian tempatan komputer anda dan menggunakannya. Kami dapat menguasai nilai ini dengan pemboleh ubah persekitaran, tetapi saya akan menyimpannya untuk jawatan yang akan datang.
Terakhir, kami menggunakan xdebug.start_with_request = yes
untuk sentiasa memulakan XDEBUG dengan setiap permintaan. Kami boleh melumpuhkan Xdebug menggunakan UI editor kami apabila kami tidak mahu menggunakan Xdebug, tetapi ia akan sentiasa berusaha untuk mewujudkan sambungan.
Sebelum kami mengesahkan sambungan XDEBUG, kami perlu mengkonfigurasi bekas permohonan kami. Kami akan menggunakan Docker Compose untuk menjalankan aplikasi kami dengan Docker dengan menambahkan yang berikut kepada compose.yaml
:
<!-- Syntax highlighted by torchlight.dev -->FROM php:8.4-apache as base LABEL maintainer="Paul Redmond" RUN docker-php-ext-install pdo_mysql opcache && \ a2enmod rewrite negotiation COPY build/apache/vhost.conf /etc/apache2/sites-available/000-default.conf FROM base as development RUN cp $PHP_INI_DIR/php.ini-development $PHP_INI_DIR/php.ini COPY build/php/conf.d/xdebug.ini $PHP_INI_DIR/conf.d/xdebug.ini RUN pecl channel-update pecl.php.net && \ pecl install xdebug-3.4.0 && \ docker-php-ext-enable xdebug FROM base as app RUN cp $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini COPY . /srv/app
Perkhidmatan app
kami mensasarkan tahap development
binaan kami, memasang kelantangan supaya kami dapat mengubah kod kami tanpa membina semula imej, dan menggunakan port 8080
untuk melayani aplikasi secara tempatan.
<!-- Syntax highlighted by torchlight.dev --><VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /srv/app/public <Directory "/srv/app/public"> AllowOverride all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
#configuring phpStorm
:
/srv/app
Jika anda tidak mempunyai pelayan localhost, anda boleh menambah satu dari halaman tetapan ini menggunakan port
. Pemetaan pelayan membolehkan IDE kami memahami cara memetakan jejak stack pelayan ke fail dalam projek. 8080
Xdebug
Seterusnya, kami sudah bersedia untuk mengaktifkan XDebug menggunakan ikon bug berhampiran menu kanan atas yang mengatakan "Mulailah mendengar sambungan debug PHP" Apabila anda melayang ke atasnya:
Apabila anda mengkliknya, anda harus melihat ikon bertukar hijau.
Perkara terakhir yang perlu kita lakukan ialah menetapkan titik putus. Buka fail
dan tetapkan titik putus pada satu -satunya laluan halaman utama:
routes/web.php
Jika anda membuka projek anda dalam pelayar web (localhost: 8080), PHPStorm harus meminta anda untuk menyambungkan kali pertama. Selepas itu, ia secara automatik akan menjeda pada sebarang titik putus yang anda tetapkan. Sebaik sahaja anda selesai debugging, anda boleh mengklik ikon bug untuk melumpuhkan sambungan xdebug.
Anda kini boleh menggunakan Xdebug dengan projek anda! Saya juga menunjukkan kepada anda topik bonus - menggunakan imej pelbagai peringkat untuk menyediakan alat pembangunan dan peringkat berasingan untuk tetapan pengeluaran. Menggunakan binaan pelbagai peringkat boleh mengambil imej anda ke tahap fleksibiliti yang lain.
Jika anda terjebak pada bahagian editor untuk menubuhkan XDebug, PHPStorm mempunyai dokumentasi yang luas tentang cara mengkonfigurasi XDEBUG. Dokumentasi Xdebug adalah satu lagi rujukan yang sangat baik, termasuk dokumen mengenai persediaan, alat, pilihan konfigurasi, dan banyak lagi.
Atas ialah kandungan terperinci Dapatkan Xdebug bekerja dengan Docker dan Php 8.4 dalam satu minit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!