Rumah >pembangunan bahagian belakang >tutorial php >Menyumbang kepada PHP: Cara Memperbaiki Pepijat di Teras PHP

Menyumbang kepada PHP: Cara Memperbaiki Pepijat di Teras PHP

William Shakespeare
William Shakespeareasal
2025-02-15 12:06:13951semak imbas

Panduan ini menerangkan cara menyumbang kepada teras PHP dengan menetapkan pepijat. Kami akan memberi tumpuan kepada aliran kerja, dengan menganggap pemahaman asas mengenai versi C dan PHP. Penyerahan ciri baru berada di luar skop artikel ini.

Contributing to PHP: How to Fix Bugs in the PHP Core

Konsep Utama:

  • Versi LifeCycle Versi PHP: Versi PHP kecil dibebaskan setiap tahun, dengan 3 tahun sokongan (2 tahun sokongan aktif, 1 tahun sokongan keselamatan sahaja). Memahami ini penting untuk mensasarkan pembetulan pepijat.
  • aliran kerja penetapan bug: Pembetulan harus menargetkan versi tertua yang disokong versi yang terjejas. Pemaju teras PHP kemudian akan menggabungkan pembetulan ke atas ke versi yang lebih baru.
  • Proses penetapan pepijat: Ini melibatkan: Mengesahkan bug, pembiakan tempatan, mencipta ujian, debugging, pengekodan pembetulan, melakukan perubahan, dan mengemukakan permintaan tarik (PR).

menyelesaikan bug: contoh langkah demi langkah

Mari Betulkan Bug #71635 (Segfault dalam

Apabila tiada tarikh akhir ditetapkan). DatePeriod::getEndDate()

  1. Pengesahan: Cepat periksa jika pepijat boleh direproduksi menggunakan 3V4L (kod ujian alat merentasi pelbagai versi PHP). Ini membantu mengenal pasti versi yang terjejas.

Contributing to PHP: How to Fix Bugs in the PHP Core

    Pengeluaran semula tempatan:
  1. garpu , klon itu, dan kemas kini kepada siaran terkini. Semak cawangan yang paling rendah, disokong aktif php/php-src cawangan (mis., Dalam kes ini). php-5.6
<code class="language-bash">git checkout -b fix-dateperiod-segfault upstream/php-5.6</code>
    Membina dan menghasilkan semula:
  1. Bina PHP dan jalankan skrip (mis., ) Menghasilkan Segfault: segfault.php
<code class="language-php"><?php
$period = new DatePeriod(new DateTimeImmutable("now"), new DateInterval("P2Y4DT6H8M"), 2);
var_dump($period->getEndDate());
?></code>
<code class="language-bash">sapi/cli/php -n segfault.php</code>
Buat ujian:
    Buat fail ujian
  1. (dalam ) untuk mengautomasikan pengesahan bug: bug71635.phpt ext/date/tests/
  2. Jalankan ujian:
<code class="language-php">--TEST--
Bug #71635 (segfault in DatePeriod::getEndDate() when no end date has been set)
--FILE--
<?php date_default_timezone_set('UTC');
$period = new DatePeriod(new DateTimeImmutable("now"), new DateInterval("P2Y4DT6H8M"), 2);
var_dump($period->getEndDate());
?>
--EXPECT--
NULL</code>

make test TESTS=ext/date/tests/bug71635.phpt

Debugging:
    Gunakan debugger (LLDB atau GDB) untuk mengenal pasti punca akar. Backtrace akan menentukan kod yang bermasalah.

Contributing to PHP: How to Fix Bugs in the PHP Core Contributing to PHP: How to Fix Bugs in the PHP Core

    Kod FIX:
  1. Ubah suai kod untuk mengendalikan penunjuk null. Sebagai contoh, tambahkan cek sebelum dereferencing

    .

  2. ujian dan komit: menjalankan semula ujian (). Sebaik sahaja berjaya, lakukan perubahan. make test

  3. Hantar PR: Kirim permintaan tarik terhadap cawangan yang sesuai . php/php-src

Kesimpulan:

Memperbaiki pepijat teras PHP adalah sumbangan yang berharga yang memerlukan hanya pengetahuan asas C. Ia menyediakan pengalaman pengaturcaraan praktikal dan membantu meningkatkan PHP. Dengan beribu -ribu laporan bug terbuka, terdapat banyak peluang untuk terlibat.

Soalan Lazim (Soalan Lazim): (Ini diringkaskan untuk keringkasan)

  • Bermula: Sediakan persekitaran pembangunan PHP, klon kod sumber, penyusunan, ujian, dan pelajari PHP internals.
  • pelaporan bug: Gunakan sistem pengesanan pepijat php, memberikan deskripsi terperinci dan kes ujian.
  • Debugging: Gunakan Xdebug atau alat debug lain.
  • pepijat biasa: sintaks, logik, dan kesilapan runtime; menghalang mereka melalui kod bersih dan ujian menyeluruh.
  • Sumbangan bukan pengekodan: Laporkan bug, menulis/menterjemahkan dokumentasi, membantu dengan laman web, mengambil bahagian dalam komuniti.
  • ujian: Gunakan phpunit untuk ujian unit dan tulis kod yang boleh diuji.
  • PHP Senarai Mel Mailing: melanggan dan mengambil bahagian dalam perbincangan.
  • Tetap dikemas kini: Gunakan laman web PHP, media sosial, surat berita, dan komuniti.
  • Amalan Terbaik: Nama -nama yang bermakna, komen, gaya yang konsisten, elakkan global, pengendalian ralat, sanitisasi input.
  • Meningkatkan Kemahiran: Praktik, Projek, Cabaran, Sumbangan Sumber Terbuka, Buku, Kursus, Persidangan.

Atas ialah kandungan terperinci Menyumbang kepada PHP: Cara Memperbaiki Pepijat di Teras PHP. 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