ホームページ > バックエンド開発 > PHPチュートリアル > PHPへの貢献:PHPコアでバグを修正する方法

PHPへの貢献:PHPコアでバグを修正する方法

William Shakespeare
リリース: 2025-02-15 12:06:13
オリジナル
927 人が閲覧しました

このガイドは、バグを修正することにより、PHPのコアに貢献する方法を説明しています。 CとPHPのバージョンの基本的な理解を仮定して、ワークフローに焦点を当てます。 新機能の提出物は、この記事の範囲外です。

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

重要な概念:

  • PHPのバージョンのライフサイクル:マイナーPHPバージョンは毎年リリースされ、3年間のサポート(2年間の積極的なサポート、1年間のセキュリティのみのサポート)があります。 これを理解することは、バグの修正をターゲットにするために重要です
  • バグ修正ワークフロー:
  • 修正は、最も古いサポートされている影響を受けるバージョンをターゲットにする必要があります。 PHPコア開発者は、修正を上向きに新しいバージョンにマージします。 バグの修正プロセス:
  • これには、バグの検証、ローカル複製、テストの作成、デバッグ、修正のコーディング、変更のコミット、プルリクエストの送信(PR)。
  • バグの解決:ステップバイステップの例

バグ#71635を修正しましょう(終了日が設定されていない場合はのセグフォールト)。

検証:DatePeriod::getEndDate()3V4L(複数のPHPバージョンにわたってツールテストコード)を使用してバグが再現可能であるかどうかをすばやく確認します。これにより、影響を受けるバージョンを識別するのに役立ちます

ローカル複製:

forkContributing to PHP: How to Fix Bugs in the PHP Core 、クローンを作成し、最新リリースに更新します。最も低い影響を受けた、

積極的にサポートされている
    ブランチ(この場合は
  1. )をチェックアウトします。 php/php-src ビルドとリプロード:php-5.6PHPを構築してスクリプトを実行します(例:
  2. )segfaultの再現:
git checkout -b fix-dateperiod-segfault upstream/php-5.6
ログイン後にコピー
  1. segfault.phpテストの作成:
テストファイル(
<?php
$period = new DatePeriod(new DateTimeImmutable("now"), new DateInterval("P2Y4DT6H8M"), 2);
var_dump($period->getEndDate());
?>
ログイン後にコピー
)を作成してバグ検証を自動化します:
sapi/cli/php -n segfault.php
ログイン後にコピー
  1. テストを実行します:bug71635.phpt ext/date/tests/
デバッグ:
--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
ログイン後にコピー
デバッガー(LLDBまたはGDB)を使用して、根本原因を特定します。 バックトレースは、問題のあるコードを特定します。

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

コード修正:Contributing to PHP: How to Fix Bugs in the PHP Core コードを変更して、nullポインターを処理します。 たとえば、参照前にチェックを追加しますContributing to PHP: How to Fix Bugs in the PHP Core

  • テストとコミット:テストを再実行(make test)。 成功したら、変更をコミットします

  • pr:の提出php/php-src

  • 結論:

    PHPコアバグの修正は、基本的なCの知識のみを必要とする貴重な貢献です。 実用的なプログラミングエクスペリエンスを提供し、PHPの改善に役立ちます。 何千ものオープンバグレポートがあるため、参加する十分な機会があります。

    よくある質問(FAQ):(これらは簡潔さのために要約されています)

    • 始めましょう:PHP開発環境を設定し、ソースコードのクローン、コンパイル、テスト、およびPHP内部の学習。
    • バグのレポート:
    • PHPバグ追跡システムを使用して、詳細な説明とテストケースを提供します。 デバッグ:
    • Xdebugまたはその他のデバッグツールを使用します
    • 一般的なバグ:構文、ロジック、ランタイムエラー。クリーンなコードと徹底的なテストでそれらを防ぎます。
    • 非コーディングの貢献:バグ、書き込み/翻訳ドキュメント、ウェブサイトの助け、コミュニティへの参加。
    • テスト:ユニットテストにphpunitを使用し、テスト可能なコードを書き込みます。
    • PHP Internalsメーリングリスト:
    • ディスカッションに加入して参加します 更新の維持:
    • PHP Webサイト、ソーシャルメディア、ニュースレター、コミュニティを使用します。
    • ベストプラクティス:意味のある名前、コメント、一貫したスタイル、グローバルを避け、エラー処理、入力の消毒。
    • スキルの向上:練習、プロジェクト、課題、オープンソースの貢献、書籍、コース、会議。

    以上がPHPへの貢献:PHPコアでバグを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    著者別の最新記事
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート