In diesem Leitfaden wird erläutert, wie er zum Kern von PHP beiträgt, indem Fehler behoben werden. Wir werden uns auf den Workflow konzentrieren und ein grundlegendes Verständnis von C- und PHP -Versioning annehmen. Neue Feature -Einreichungen liegen außerhalb des Rahmens dieses Artikels.
Schlüsselkonzepte:
- PHP-Versionslebenszyklus: Minor-PHP-Versionen werden jährlich mit 3 Jahren Unterstützung (2 Jahre aktiver Unterstützung, 1 Jahr Sicherheitsunterstützung) veröffentlicht. Das Verständnis dafür ist entscheidend für die Targeting von Fehlerbehebungen.
- Fehlerfixierungs -Workflow: Korrekturen sollten auf die älteste unterstützte betroffene Version abzielen. PHP -Kernentwickler fusionieren dann die Fixierung nach neueren Versionen.
- Der Fehlerbehebungsprozess für Fehler: Dies beinhaltet: Validierung des Fehlers, lokale Reproduktion, Erstellen eines Tests, Debuggens, Codierung der Fix, Änderungen und Senden einer Pull -Anfrage (PR).
Auflösen eines Fehlers: Ein Schritt-für-Schritt-Beispiel
Fixieren wir den Fehler #71635 (ein Segfault in Wenn kein Enddatum festgelegt ist). DatePeriod::getEndDate()
- Validierung: Überprüfen Sie schnell, ob der Fehler mit 3V4L reproduzierbar ist (ein Tool -Testcode über mehrere PHP -Versionen). Dies hilft dabei, betroffene Versionen zu identifizieren.
- Lokale Reproduktion: gabel , klonen und aktualisieren Sie die neuesten Veröffentlichungen. Checkout Die am niedrigsten betroffene,
php/php-src
aktiv unterstützte ast (z. B. in diesem Fall).php-5.6
git checkout -b fix-dateperiod-segfault upstream/php-5.6
- Erstellen und reproduzieren: PHP erstellen und ein Skript ausführen (z. B. ), um den SEGFAULT zu reproduzieren:
segfault.php
<?php $period = new DatePeriod(new DateTimeImmutable("now"), new DateInterval("P2Y4DT6H8M"), 2); var_dump($period->getEndDate()); ?>
sapi/cli/php -n segfault.php
- Erstellen Sie einen Test: Erstellen Sie eine Testdatei (in
bug71635.phpt
), um die Fehlerüberprüfung zu automatisieren: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-- NULLFühren Sie den Test aus:
make test TESTS=ext/date/tests/bug71635.phpt
- Debugging: Verwenden Sie einen Debugger (LLDB oder GDB), um die Grundursache zu identifizieren. Der Backtrace zeigt den problematischen Code.
-
codieren Sie den Fix: Ändern Sie den Code, um den Nullzeiger zu verarbeiten. Fügen Sie beispielsweise eine Überprüfung vor Dereferenzierung hinzu
dpobj->end
-
testen und lit: den Test erneut ausführen (
make test
). Sobald er erfolgreich ist, begehen Sie die Änderungen. -
Senden Sie eine PR: eine Pull -Anfrage gegen den entsprechenden Zweig von
php/php-src
.
Schlussfolgerung:
Fixieren von PHP -Kernfehler ist ein wertvoller Beitrag, der nur grundlegendes C -Wissen erfordert. Es bietet praktische Programmiererfahrung und hilft, PHP zu verbessern. Mit Tausenden von offenen Fehlerberichten gibt es ausreichend Möglichkeiten, sich zu engagieren.
häufig gestellte Fragen (FAQs): (Diese sind für die Kürze zusammengefasst)
- Erste Schritte: Richten Sie eine PHP -Entwicklungsumgebung ein, klonen Sie den Quellcode, kompilieren, testen und lernen Sie PHP -Interna.
- Meldungsfehler: Verwenden Sie das PHP -Fehlerverfolgungssystem und liefert detaillierte Beschreibungen und Testfälle.
- Debugging: Verwenden Sie XDEBUG oder andere Debugging -Tools.
- gemeinsame Fehler: Syntax-, Logik- und Laufzeitfehler; Verhindern Sie sie durch sauberes Code und gründliche Tests.
- Nichtkodierende Beiträge: BEGEBNISSE, Dokumentation schreiben/übersetzen, mit der Website helfen, an der Community teilnehmen.
- Test: Verwenden Sie Phpunit für Unit -Tests und schreiben Sie Testable Code.
- PHP -Interna Mailingliste: Abonnieren und an Diskussionen teilnehmen.
- Bleiben Sie aktualisiert: Verwenden Sie die PHP -Website, die Social Media, Newsletter und die Gemeinschaften.
- Best Practices: sinnvolle Namen, Kommentare, konsistenter Stil, Vermeiden
- Fähigkeiten verbessern: Praxis, Projekte, Herausforderungen, Open -Source -Beiträge, Bücher, Kurse, Konferenzen.
Das obige ist der detaillierte Inhalt vonBeitrag zum PHP: So beheben Sie Fehler im PHP -Kern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In dem Artikel werden PHP -Datenobjekte (PDO) erörtert, eine Erweiterung für den Datenbankzugriff in PHP. Es zeigt die Rolle von PDO bei der Verbesserung der Sicherheit durch vorbereitete Aussagen und deren Vorteile gegenüber MySQLI, einschließlich Datenbankabstraktion und besserer Fehlerbehandlung.

Memcache und Memcached sind PHP -Caching -Systeme, die Web -Apps beschleunigen, indem die Datenbanklast reduziert wird. Eine einzelne Instanz kann zwischen Projekten mit sorgfältigem Schlüsselmanagement geteilt werden.

In Artikel werden Schritte zum Erstellen und Verwalten von MySQL -Datenbanken mithilfe von PHP erörtert und konzentriert sich auf Verbindung, Erstellung, gemeinsame Fehler und Sicherheitsmaßnahmen.

In dem Artikel wird erläutert, wie JavaScript und PHP aufgrund ihrer unterschiedlichen Umgebungen indirekt durch HTTP -Anfragen interagieren. Es deckt Methoden zum Senden von Daten von JavaScript an PHP ab und zeigt Sicherheitsüberlegungen wie Datenvalidierung und Protokoll

Pear ist ein PHP -Framework für wiederverwendbare Komponenten, die die Entwicklung mit Paketmanagement, Codierungsstandards und Unterstützung der Community verbessern.

PHP ist eine vielseitige Skriptsprache, die hauptsächlich für die Webentwicklung verwendet wird und dynamische Seiten erstellt, und kann auch für Befehlszeilen-Skript-, Desktop-Apps und API-Entwicklung verwendet werden.

In dem Artikel werden 1995 die Entwicklung von PHP von "Personal Home Page Tools" von "PHP: Hypertext Precessor" im Jahr 1998 erörtert, was seine erweiterte Verwendung über persönliche Websites hinaus widerspiegelt.

Zu den wirksamen Methoden zur Verhinderung fester Sitzungsangriffe gehören: 1. Regenerieren Sie die Sitzungs -ID, nachdem sich der Benutzer angemeldet hat; 2. Verwenden Sie einen sicheren Algorithmus für Sitzungs -ID -Generierung; 3.. Implementieren Sie den Timeout -Mechanismus für Sitzungen; 4. Verschlüsseln Sie Sitzungsdaten mithilfe von HTTPS. Diese Maßnahmen können sicherstellen, dass die Anwendung bei festgelegten Sitzungen unzerstörbar ist.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software
