Home >Backend Development >PHP Tutorial >Contributing to PHP: How to Fix Bugs in the PHP Core
This guide explains how to contribute to PHP's core by fixing bugs. We'll focus on the workflow, assuming a basic understanding of C and PHP's versioning. New feature submissions are outside the scope of this article.
Key Concepts:
Resolving a Bug: A Step-by-Step Example
Let's fix bug #71635 (a segfault in DatePeriod::getEndDate()
when no end date is set).
php/php-src
, clone it, and update to the latest releases. Checkout the lowest affected, actively supported branch (e.g., php-5.6
in this case).<code class="language-bash">git checkout -b fix-dateperiod-segfault upstream/php-5.6</code>
segfault.php
) reproducing the segfault:<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>
bug71635.phpt
test file (in ext/date/tests/
) to automate bug verification:<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>
Run the test: make test TESTS=ext/date/tests/bug71635.phpt
Code the Fix: Modify the code to handle the null pointer. For example, add a check before dereferencing dpobj->end
.
Test and Commit: Re-run the test (make test
). Once successful, commit the changes.
Submit a PR: Submit a pull request against the appropriate branch of php/php-src
.
Conclusion:
Fixing PHP core bugs is a valuable contribution requiring only basic C knowledge. It provides practical programming experience and helps improve PHP. With thousands of open bug reports, there are ample opportunities to get involved.
Frequently Asked Questions (FAQs): (These are summarized for brevity)
The above is the detailed content of Contributing to PHP: How to Fix Bugs in the PHP Core. For more information, please follow other related articles on the PHP Chinese website!