Krótko: Historia PHP zaczyna się w 1994 roku od Rasmusa Lerdorfa, który napisane w C programy CGI do swojej prywatnej strony nazwał „Personal Home Page Tools”. W 1998 roku ukazało się PHP 3, w 2000 roku PHP 4 z Zend Engine, w 2004 roku PHP 5, w 2015 roku PHP 7, a w 2020 roku PHP 8. Dziś co roku w listopadzie wychodzi nowa wersja, która jest utrzymywana przez cztery lata.
Jak powstało PHP: Personal Home Page Tools (1994 do 1997)
Według podręcznika PHP Rasmus Lerdorf napisał w 1994 roku szereg programów CGI w C. Pierwotnie miały jedynie rejestrować odwiedziny jego internetowego życiorysu. Zbiór nazwał „Personal Home Page Tools”, a kod źródłowy opublikował w czerwcu 1995 roku. Dzięki temu także inni mogli korzystać z tych narzędzi i je ulepszać.
We wrześniu 1995 roku Lerdorf rozbudował narzędzia i tymczasowo nazwał je „FI” (Forms Interpreter). W październiku 1995 roku nastąpiło całkowite przepisanie, znów pod nazwą PHP. W kwietniu 1996 roku połączył obie nazwy w PHP/FI. Ta wersja otrzymała w czerwcu 1996 roku status wersji 2.0, a w listopadzie 1997 roku wyszła z fazy beta.
Już ta wczesna faza kształtuje PHP do dziś: język, który powstał z praktycznej potrzeby, szybko daje wyniki i jest rozwijany przez otwartą społeczność.
PHP 3 i Zend Engine (1997 do 2004)
W 1997 roku Andi Gutmans i Zeev Suraski z Tel Awiwu zaczęli pisać parser od nowa, czyli tę część, która wczytuje kod źródłowy i dzieli go na elementy. Wspólnie z Lerdorfem powstał z tego nowy język, który nazywał się już tylko „PHP”. Nazwa stała się akronimem rekurencyjnym „PHP: Hypertext Preprocessor”. PHP 3.0 ukazało się w czerwcu 1998 roku jako następca PHP/FI 2.0. Ważna była przede wszystkim dobra rozszerzalność i pierwsza obsługa programowania obiektowego.
Potem Gutmans i Suraski ponownie napisali rdzeń. Rezultatem był Zend Engine, nazwany od ich imion Zeev i Andi. Przedstawiono go w połowie 1999 roku. PHP 4.0 ukazało się w maju 2000 roku i przyniosło lepszą wydajność, sesje HTTP oraz buforowanie wyjścia.
W lipcu 2004 roku nastąpiło PHP 5 z Zend Engine 2.0 i nowym modelem obiektowym. Seria 5 długo pozostawała w użyciu i rosła z każdą podwersją. Wraz z PHP 5.3.3 doszedł FastCGI Process Manager (FPM) jako odrębny tryb pracy, a wraz z PHP 5.5.0 pamięć podręczna bajtkodu OPcache stała się częścią dystrybucji.
Pominięte PHP 6 i skok do PHP 7 (2005 do 2019)
PHP 6 miało przynieść dogłębną obsługę Unicode, czyli jednolite przetwarzanie wszystkich znaków pisma. Według podręcznika tę pracę porzucono. Niektóre planowane funkcje trafiły do PHP 5.3 (przestrzenie nazw) i PHP 5.4 (traity oraz krótki zapis tablic []). Następna duża wersja otrzymała więc numer 7.
PHP 7.0 ukazało się 3 grudnia 2015 roku z Zend Engine 3.0. Podstawą był projekt PHPNG, czyli przepracowanie rdzenia pod kierunkiem Dmitrego Stogova. Powiązany RFC, czyli formalna propozycja zmiany, podawał wzrost wydajności od 20 do 110 procent w rzeczywistych aplikacjach, takich jak WordPress i Drupal. Nowością były między innymi operator łączenia z null ?? oraz klasy anonimowe.
<?php
// Od PHP 7.0: wartość domyślna bez łańcucha isset()
$sprache = $_GET['lang'] ?? 'de';
Serię 7 zakończyło PHP 7.4. Jego ostatnia wersja, 7.4.33, ukazała się 3 listopada 2022 roku; według php.net wsparcie zakończyło się 28 listopada 2022 roku.
PHP 8 i coroczny rytm (od 2020 roku do dziś)
PHP 8.0 ukazało się 26 listopada 2020 roku z nazwanymi argumentami, typami unijnymi, atrybutami, operatorem nullsafe ?->, wyrażeniami match i kompilatorem JIT. Od tego czasu co roku wychodzi nowa podwersja. Co przyniosła każda z wersji, opisuje przegląd PHP 8.0 do 8.5.
| Wersja | Pierwsze wydanie | Najważniejsze punkty |
|---|---|---|
| PHP 3.0 | czerwiec 1998 | nowy parser, nazwa „PHP: Hypertext Preprocessor” |
| PHP 4.0 | maj 2000 | Zend Engine, sesje, buforowanie wyjścia |
| PHP 5.0 | lipiec 2004 | Zend Engine 2.0, nowy model obiektowy |
| PHP 7.0 | 3 grudnia 2015 | Zend Engine 3.0, wyraźnie szybsze |
| PHP 8.0 | 26 listopada 2020 | JIT, atrybuty, typy unijne |
| PHP 8.1 | 25 listopada 2021 | enumy, Fibers, właściwości readonly |
| PHP 8.2 | 8 grudnia 2022 | klasy readonly, typy DNF |
| PHP 8.3 | 23 listopada 2023 | typowane stałe klas |
| PHP 8.4 | 21 listopada 2024 | Property Hooks, asymetryczna widoczność |
| PHP 8.5 | 20 listopada 2025 | operator pipe, rozszerzenie URI |
W 2024 roku projekt PHP głosował nad nowym cyklem wydawniczym. Od tego czasu każda gałąź wersji otrzymuje dwa lata aktywnego wsparcia i dwa lata poprawek bezpieczeństwa, w każdym przypadku do 31 grudnia. Szczegółowe zasady podajemy na stronie Wersje PHP i cykl wydawniczy.
Co historia oznacza dla bezpieczeństwa dziś
Długa historia jest siłą, ponieważ PHP jest stabilne i dobrze udokumentowane. Jest jednak także ciężarem: na wielu serwerach działają wersje, które skonfigurowano przed laty i nigdy nie wymieniono. PHP 5.6 od 31 grudnia 2018 roku nie ma oficjalnego wsparcia, PHP 8.0 od 26 listopada 2023 roku, a PHP 8.1 od 31 grudnia 2025 roku.
PHP2Shell to uwidoczniło. Według prasy branżowej dotknięte są niemal wszystkie wersje aż do PHP 5.4. Oficjalne poprawki są od 21 października 2026 roku dostępne tylko dla gałęzi 8.2 do 8.5; dla 7.4, 8.0 i 8.1 istnieją jedynie minimalne backporty kodu źródłowego. Kto prowadzi starsze wersje, znajdzie skutki w poradniku Koniec wsparcia PHP: ryzyka przestarzałych wersji.
Proszę zanotować dla każdego serwera wersję PHP i datę zakończenia jej wsparcia. Dzięki temu niespodzianka zamienia się w planowalny termin.
Jak konkretnie pomaga PHP SOS?
- Znajdowanie starych zaniedbań: Ustalamy, które generacje PHP nadal działają na Państwa serwerach, także na zapomnianych systemach.
- Ocena ryzyka: Pokazujemy, które wersje otrzymują oficjalne aktualizacje, a gdzie pozostają tylko rozwiązania przejściowe.
- Planowanie migracji: W ramach migracji z PHP 8.1 i starszych przenosimy aplikacje na wspieraną wersję, przetestowaną przed przejściem.
- Dokumentacja: Otrzymują Państwo zestawienie z wersjami i datami końca wsparcia do planowania.
Częste pytania
Kto wymyślił PHP?
PHP wywodzi się od Rasmusa Lerdorfa. W 1994 roku napisał w C zbiór programów CGI, który nazwał Personal Home Page Tools. Od 1997 roku Andi Gutmans i Zeev Suraski napisali parser od nowa, z czego powstało PHP 3.
Co oznacza skrót PHP?
Pierwotnie Personal Home Page. Od PHP 3 nazwa jest akronimem rekurencyjnym: PHP: Hypertext Preprocessor. Skrót zawiera więc samego siebie.
Dlaczego nie było PHP 6?
PHP 6 miało przynieść dogłębną obsługę Unicode. Według podręcznika PHP tę pracę porzucono. Niektóre planowane funkcje trafiły do PHP 5.3 i 5.4, a następna duża wersja nosiła już numer 7.
Od kiedy istnieją PHP-FPM i OPcache?
PHP-FPM wprowadzono w PHP 5.3.3 jako odrębne SAPI. OPcache według podręcznika wchodzi w skład dystrybucji od PHP 5.5.0, a wcześniej był dostępny dla wersji 5.2 do 5.4 przez PECL.