首頁 > 後端開發 > php教程 > 為PHP做出貢獻:如何修復PHP核心中的錯誤

為PHP做出貢獻:如何修復PHP核心中的錯誤

William Shakespeare
發布: 2025-02-15 12:06:13
原創
947 人瀏覽過

本指南說明瞭如何通過修復錯誤來為PHP的核心做出貢獻。 假設對C和PHP的版本控制有基本的了解,我們將重點關注工作流程。 新功能提交的內容不在本文的範圍之內。

>

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

密鑰概念:

    PHP的生命週期:
  • 次要PHP版本每年發布,並獲得3年的支持(2年的積極支持,僅安全支持1年)。 理解這對於針對錯誤修復至關重要。
  • >錯誤修復工作流程:修復應定位最古老的受影響的版本。 然後,PHP核心開發人員將將修復程序合併到較新的版本。
  • >
  • >錯誤修復過程:這涉及:驗證錯誤,本地複制,創建測試,調試,編碼修復,進行更改並提交拉動請求(PR)。
  • >

>>解決一個錯誤:逐步示例

>

>讓我們修復錯誤#71635(DatePeriod::getEndDate()中的segfault in n not end Date設置時)。

  1. > 驗證:快速檢查該錯誤是否使用3V4L(跨多個PHP版本的工具測試代碼)可以重現。這有助於識別受影響的版本。

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

  1. 本地複制: fork,克隆它,然後更新到最新版本。結帳受影響最低的,php/php-src主動支持分支(例如,在這種情況下,)。 php-5.6
git checkout -b fix-dateperiod-segfault upstream/php-5.6
登入後複製
    >構建和再現:
  1. 構建php並運行腳本(例如,)重現segfault:> segfault.php
<?php
$period = new DatePeriod(new DateTimeImmutable("now"), new DateInterval("P2Y4DT6H8M"), 2);
var_dump($period->getEndDate());
?>
登入後複製
>
sapi/cli/php -n segfault.php
登入後複製
創建一個測試:
    創建一個
  1. 測試文件(in)以自動bug驗證:> bug71635.phpt ext/date/tests/
  2. 運行測試:
--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
登入後複製
>

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

>調試:
    >使用調試器(LLDB或GDB)識別根本原因。 回溯將查明有問題的代碼。

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

    代碼修復程序:
  1. 修改代碼以處理空指針。 例如,在提出之前添加支票

    >

  2. 測試和提交:>重新運行測試(make test)。 一旦成功,請進行更改。

  3. >提交一個PR:提交針對的適當分支的拉請請求 php/php-src

結論:

修復PHP核心錯誤是僅需要基本C知識的寶貴貢獻。 它提供實用的編程經驗並有助於改善PHP。 有成千上萬的公開錯誤報告,有足夠的機會參與。 >

常見問題(常見問題解答):

(這些>簡短匯總)

> >

>開始:
    設置PHP開發環境,克隆源代碼,編譯,測試和學習PHP內部列表。
  • >報告錯誤:
  • 使用PHP錯誤跟踪系統,提供詳細的描述和測試用例。
  • 調試:
  • 使用XDEBUG或其他調試工具。
  • > > common錯誤:
  • 語法,邏輯和運行時錯誤;防止它們通過乾淨的代碼和徹底的測試。
  • >非編碼貢獻:
  • 報告錯誤,寫/翻譯文檔,幫助網站,參與社區。
  • 測試:
  • >使用phpunit進行單元測試和編寫可測試代碼。
  • php內部郵件列表:
  • 訂閱並參與討論。
  • >保持更新:
  • 使用PHP網站,社交媒體,新聞通訊和社區。
  • > >最佳實踐:
  • 有意義的名稱,評論,一致的樣式,避免全球範圍,錯誤處理,輸入消毒。
  • 提高技能:
  • 練習,項目,挑戰,開源貢獻,書籍,課程,會議。

以上是為PHP做出貢獻:如何修復PHP核心中的錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板