Rasmus Lerdorf did not begin PHP with the ambition of creating a major general-purpose language. In 1994, he wanted to know who visited his online résumé, reuse page fragments, and process Web forms more easily. He wrote C programs that the server executed for these tasks.
Thousands of creators soon faced the same need: generate a page from a request, save input, or query a database without building an entire C infrastructure or coordinating separate Perl scripts.
PHP became influential because it shortened the distance between HTML and behavior. Its history is also collective: from PHP 3 onward, Andi Gutmans, Zeev Suraski, and a broad community profoundly rewrote and extended Lerdorf’s original project.
From Greenland to systems engineering
Lerdorf was born in Greenland in 1968 to a Danish family and later grew up in Denmark and Canada. He studied systems design engineering at the University of Waterloo, graduating in 1993.
The young Web mostly served static HTML. Dynamic responses used the Common Gateway Interface, which launched an external program and passed it request data. CGI was powerful but technical: developers had to parse parameters, emit HTTP headers, escape HTML, and connect storage themselves. Lerdorf focused on eliminating that repeated work.
Personal Home Page Tools: measuring and automating
In 1994, Lerdorf wrote C-based CGI binaries for his site to record résumé visits and reuse page elements. He called them Personal Home Page Tools.
He added form handling so creators could retrieve browser values and build guestbooks, display data, or adapt pages without writing a complete CGI program each time. He released the source in June 1995, letting users install, fix, and extend it.
Names such as PHP Tools, Forms Interpreter, and Personal Home Page Construction Kit reflected a project evolving from site tracking into a scripting language embedded in HTML.
Embedding the program in the page
PHP/FI’s practical innovation was to place dynamic instructions directly inside HTML. The server interpreted those areas and sent only the result to the browser.
<h1>Hello <?= htmlspecialchars($name) ?></h1>
Developers could begin with an ordinary page and add a condition, form value, or database result exactly where it appeared. This produced a first result quickly, but mixing data access, business rules, and presentation eventually harmed testing and maintenance. Later frameworks introduced clearer separation without erasing the original advantage: PHP met page creators inside their existing file.
In 1996, Lerdorf combined and rewrote the tools as PHP/FI 2.0, with variables, user functions, conditions, loops, cookies, and database connections. C- and Perl-inspired syntax felt familiar to Unix programmers, and Web operations came ready to use.
Its largely one-person architecture reached limits as applications grew. Lerdorf did not defend every detail as untouchable; he accepted a rewrite when a better implementation emerged. That willingness mattered to PHP’s survival as much as the initial code.
PHP 3: the rewrite that changed the project’s scale
In 1997, Israeli students Andi Gutmans and Zeev Suraski encountered PHP/FI limits in an e-commerce project and began rewriting the parser. They contacted Lerdorf, and the three collaborated on a language that preserved PHP’s users and approach while adding a cleaner syntax, extensibility, initial object support, and modules for databases and protocols.
PHP became the recursive acronym PHP: Hypertext Preprocessor. PHP 3.0 was released in June 1998 by an international team. Lerdorf supplied the origin and pragmatic direction; Gutmans, Suraski, and many contributors built the extensible platform. The official credits record separate responsibility for engines, APIs, drivers, and libraries.
The request model that simplified deployment
PHP historically loads context for each request, produces a response, then releases most state. Persistent data lives in a database, file, cache, or external session.
This model isolates requests and lets servers distribute work among processes. Repeated startup has a cost, offset by server integration, opcode caches, and engine optimization. Persistent workers, WebSockets, and long asynchronous jobs require more care because they depart from the stateless cycle that shaped many libraries.
PHP’s early success partly came from matching the concrete structure of an HTTP request and a page response instead of imposing a general application model.
After PHP 3, Gutmans and Suraski rewrote the core again. The Zend Engine, named from their first names, powered PHP 4 in 2000. PHP 5 and Zend Engine II strengthened objects, exceptions, and database interfaces.
Later versions added namespaces, traits, generators, stronger typing, PHP 7 performance gains, and PHP 8 attributes, union types, and JIT compilation. Lerdorf remained an important contributor and advocate, especially for performance and security, but no longer the sole architect.
The succession of engines and teams demonstrates an open-source principle: a creator can provide momentum without becoming the bottleneck for every future feature.
LAMP: an accessible stack for publishing an idea
PHP spread with Linux, Apache, and MySQL or PostgreSQL, later summarized as LAMP. Shared hosts could offer each customer a directory for PHP files without requiring a permanent application process or complex deployment.
WordPress, Drupal, Joomla, forums, and shops multiplied that accessibility. Availability by default, copyable examples, and common databases mattered as much as syntax. The resulting legacy is immense: hosts maintain several versions, old applications slow migration, and vulnerabilities in popular modules can affect many sites.
Design guided by real cases
Lerdorf describes PHP as a tool built to solve problems rather than a language derived from a grand plan. Functions appeared because sites needed to decode requests, create images, or access databases.
That pragmatism explains both strength and irregularity. Function names, argument order, and return values do not always follow one rule because libraries arrived at different times from different authors, with compatibility prioritized.
A language designed entirely on paper might have been more symmetrical but missed the moment when millions of pages needed an immediately installable solution. Modern PHP adds coherent APIs and deprecates behavior, yet cannot freely rename decades of Web usage.
Security: ease does not remove trust boundaries
Easy access to request values sometimes encouraged dangerous mixing of user input with SQL, file paths, or shell commands. Early register_globals settings even turned HTTP parameters into global variables, obscuring their origin; modern PHP removed that behavior.
The general problem is confusing data with instructions, not an intrinsic inability of PHP to be secure. Prepared queries, context-aware escaping, validation, password hashing, and minimal permissions support robust applications.
Defaults, cryptography, drivers, diagnostics, and frameworks improved, but the ecosystem still maintains old code. Democratization must make safe action as easy as unsafe action.
From frameworks to ecosystem professionalization
As applications grew, frameworks such as Symfony and Laravel separated routing, controllers, models, views, and services while providing dependency injection, migrations, and common protections.
Composer organized dependencies in the early 2010s, and PHP-FIG standards harmonized autoloading, interfaces, and style. These tools answer a different scale than one PHP file embedded in HTML.
PHP’s path moves from reducing ceremony to deliberately restoring structure when complexity justifies it. Maturity preserves an accessible entry point without pretending one page suits every system.
Lerdorf after the initial creation
Lerdorf worked at Web companies including Yahoo!, WePay, and Etsy, focusing on large-platform performance, profiling, and security while continuing to contribute to PHP infrastructure.
His talks emphasize the ecosystem rather than creator worship. He published tools for others to modify, accepted the PHP/FI rewrite, and shared PHP 3’s design instead of preserving his implementation as definitive.
His personal contribution remains decisive: recognizing early that the Web needed programming close to the page and choosing a form accessible enough to copy and adapt.
Why Rasmus Lerdorf still matters
PHP let students, associations, small businesses, and individual developers turn static documents into data-backed applications without an infrastructure team. Its impact includes millions of modest ideas that could be published.
The language bears the marks of that openness. Criticism of its historical inconsistency is valid but incomplete without the problem it solved. Lerdorf also showed how a creator can let a project become collective: PHP 3 and Zend are the foundation of the versions that conquered the Web.
PHP’s lasting principle is that technology changes the world when it lowers the cost between an intention and putting it online. The next challenge is growing without losing the accessibility that made it useful.
Timeline
- 1968: Rasmus Lerdorf is born in Greenland.
- 1993: He graduates in systems design engineering from Waterloo.
- 1994: He creates the first CGI binaries for his site.
- June 1995: He publishes the PHP Tools source code.
- 1995: The project evolves through Forms Interpreter back to PHP.
- 1996: PHP/FI 2.0 becomes a language embedded in HTML.
- 1997: The parser rewrite begins with Andi Gutmans and Zeev Suraski.
- June 1998: The international team releases PHP 3.
- 2000: PHP 4 adopts the Zend Engine.
- 2004: PHP 5 and Zend Engine II strengthen the object model.
- 2015: PHP 7 greatly improves performance and memory use.
- 2020: PHP 8 adds attributes, union types, and JIT compilation.
- 2000s–2020s: Lerdorf continues work on Web performance and security.
Frequently asked questions
Did Rasmus Lerdorf intend to create a programming language?
Not initially. He built CGI tools to track visits, reuse content, and process forms. User needs gradually turned the toolkit into a language.
Did Rasmus Lerdorf create modern PHP alone?
No. He created PHP Tools and PHP/FI and collaborated on PHP 3. Andi Gutmans and Zeev Suraski rewrote the parser and designed Zend; many contributors built modern versions and extensions.
What does PHP mean today?
It means “PHP: Hypertext Preprocessor,” a recursive acronym. The original “Personal Home Page Tools” became too narrow once the project grew into a general server-side language.
Why did PHP spread so widely?
It added behavior to HTML with little setup, offered direct access to forms and databases, and was available from many hosts. Open-source content-management systems multiplied its reach.
Is PHP suitable only for small sites?
No. Frameworks, dependency tools, static analyzers, and engine improvements support large applications. Its simple entry point does not remove the need for architecture, tests, and security practices as projects grow.