Rasmus Lerdorf udostępnił publicznie kod źródłowy „PHP Tools 1.0”, zbioru usprawnień swojej strony internetowej.
Wydanie pod nazwą PHP/FI 2.0, pierwsza wersją, którą można nazwać samodzielnym językiem, niektóre funkcje przetrwały do dnia dzisiejszego.
Do projektu dołączyli Zeev Suraski i Andi Gutmans, parser języka został przepisany od nowa.
Dodano silnik nazwany jako Zend Engine 1.0.
Wprowadzono tablice superglobalne ($_GET, $_POST, $_SESSION, itd.).
Domyślnie wyłączono register_globals.
Wprowadzono interfejs wiersza poleceń (CLI).
Naprawiono błędy, jednak nie zachowano zgodności z rozszerzeniami skompilowanymi dla PHP w wersji 4.3.x.
Wprowadzono Zend Engine II z nowym modelem obiektowym.
Ulepszenia wydajności dzięki wprowadzeniu zmiennych kompilatora w przeprojektowanym silniku PHP. Dodano PHP Data Objects (PDO) jako spójny interfejs dostępu do baz danych.
Domyślnie włączone rozszerzenie filter. Natywna obsługa formatu JSON.
Obsługa przestrzeni nazw, późne wiązania statyczne, etykieta skoku (ograniczone goto), funkcje anonimowe, domknięcia, archiwa PHP (phar), ulepszona obsługa systemu Window, sqlite3, mysqlnd jako zamiennik libmysql jako podstawowa biblioteka dla rozszerzeń PHP współpracujących z MySQL , fileinfo jako zamiennik dla mime_magic, rozszerzenia internacjonalizacji i wycofanie rozszerzenia ereg.
Obsługa mechanizmu traits, uproszczona składnia tablic, usunięte elementy: register_globals, safe_mode, allow_call_time_pass_reference. W interpreter wbudowano serwer WWW.
Dodanie rozszerzenia Zend Opcache w standardzie.
Wprowadzono statyczne wyrażenia skalarne, zmienną liczbę argumentów funkcji, importowanie funkcji i stałych, nowy debugger (migracja do PHP 5.6).
Rozwijana koncepcyjnie przez wiele lat, nigdy nie wydana porzucona wersja.
Zend Engine 3 (ulepszenia wydajności i obsługa 64-bitowych liczb całkowitych w systemie Windows), możliwość deklarowania funkcji z wymogiem zwracania konkretnego typu danych (migracja do PHP 7.0).
Wprowadzono alternatywną składnię dla wyrażenia list(), zwracany typ void, modyfikatory widoczności stałych w klasach, nowy pseudo typ iterable (migracja do PHP 7.1).
Zwiększenie wydajności, usunieto rozszerzenie mcrypt, rozszerzono działanie typów parametrów, deklaracje typu wywołanego obiektu, usunięto m.in each(), assert(), create_function(), __autoload (migracja do PHP 7.2).
Wprowadzono funkcje array_key_last() oraz array_key_first(), elastyczną składnię HEREDOC / NOWDOC, wsparcie referencji w list(), nowy typ błędu CompileError, PCRE2 (migracja do PHP 7.3).
Wprowadzono wstępne ładowanie, funkcje strzałkowe, operator spread (migracja do PHP 7.4).
Niektóre nowości: typy unii, kompilacja Just In Time (JIT), operator nullsafe, nazwane argumenty, wyrażenie dopasowania, interfejs Stringable, funkcja str_contains(), stabilne sortowanie (migracja do PHP 8.0).
Wprowadzono m.in. typ wyliczeniowy, właściwości tylko do odczytu, typ bezzwrotny, bloki kodu Fibers (migracja do PHP 8.1).
Klasy tylko do odczytu, nowe typy zwracanych danych: null, false i true jako typy autonomiczne, wycofanie dynamicznych właściwości oraz funkcji utf8_encode() i utf8_decode() (migracja do PHP 8.2).