Rumah >pembangunan bahagian belakang >tutorial php >Dapatkan Xdebug bekerja dengan Docker dan Php 8.4 dalam satu minit

Dapatkan Xdebug bekerja dengan Docker dan Php 8.4 dalam satu minit

Emily Anne Brown
Emily Anne Brownasal
2025-03-06 02:01:17831semak imbas

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:

    Dockerfile yang memasang modul dan konfigurasi xdebug
  • fail
  • untuk memulakan bekas compose.yaml
  • editor atau IDE yang disokong yang boleh anda gunakan sebagai pelanggan xdebug
#project Persediaan

Dalam siaran ini, kami akan menggunakan Apache untuk memudahkan persediaan pelayan; Walau bagaimanapun, kod DockerFile adalah sama untuk mengkonfigurasi XDEBUG dalam imej PHP-FPM.

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
Kami mencipta folder dan fail untuk persediaan kami melalui baris arahan, tetapi berasa bebas untuk membuatnya tetapi anda mahu. Sebagai tambahan kepada fail docker biasa, kami membuat fail

untuk mengkonfigurasi laluan akar web ke aplikasi kami. vhost.conf

#Docker Image Setup

Seterusnya, tambahkan yang berikut ke fail

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
Dockerfile mempunyai beberapa baris, jadi mari kita pergi ke kod yang paling penting untuk membantu anda memahami cara mengkonfigurasi Xdebug. Pertama, kami menggunakan pembentukan pelbagai peringkat supaya kami dapat mengkonfigurasi XDEBUG dalam persekitaran pembangunan. Sebelum tahap

adalah tahap development, yang mempunyai persediaan asas keperluan imej kami seperti sambungan PHP yang kami inginkan dalam base mana -mana persekitaran dan mengkonfigurasi Apache.

Seterusnya tahap

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

Terakhir, kami mempunyai tahap

, yang mana imej permohonan kami akan digunakan dalam membina pengeluaran. Menggunakan sasaran app Omits mengkonfigurasi XDebug dan menggunakan versi pengeluaran fail php.ini. app

#apache vhost

Kami tidak berada di sini untuk belajar cara mengkonfigurasi Apache, kami hanya mahu menggunakannya untuk dengan cepat menunjukkan betapa mudahnya untuk menubuhkan Xdebug di Docker. Cukup tambahkan kod berikut ke fail

, 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>
konfigurasi #xdebug

Seterusnya, kita perlu mengkonfigurasi XDEBUG melalui fail

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.

#Running the Image

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.

kita kini boleh membina dan memulakan imej kami menggunakan Docker Compose:

<!-- 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>
Perintah sebelumnya akan membina imej, mulakan bekas, dan jalankan di latar belakang. Pada ketika ini, Xdebug bersedia menerima sambungan, bagaimanapun, kita perlu tweak satu perkara dalam IDE kami untuk mendapatkannya berfungsi.

#configuring phpStorm

Kami akan menggunakan phpStorm, tetapi anda boleh menggunakan mana -mana editor yang anda mahukan yang menyokong XDebug. Oleh kerana kami menggunakan Docker, kami perlu mengkonfigurasi pelayan di PHPStorm yang memetakan jumlah Docker kami ke kod projek tempatan kami. Anda boleh melakukannya dengan membuka Tetapan & GT; Php & gt; Pelayan dan mengkonfigurasi pelayan localhost dengan pemetaan

: /srv/app Jika anda tidak mempunyai pelayan localhost, anda boleh menambah satu dari halaman tetapan ini menggunakan port

dan memilih debugger

. 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.

#Learn more Teruskan dalam Bahagian 2 tutorial ini: Imej Docker Fleksibel dengan Pembolehubah Alam Sekitar PHP INI.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn