Có hai điểm chính cho thành công của PHP: Thời gian và sự tập trung vào lưu trữ được chia sẻ.
Ban đầu, Web là tĩnh. Máy chủ web chỉ có thể phân phối HTML được tạo trước, điều này rõ ràng là không đủ sau một thời gian, vì vậy vào năm 1993, nhóm NCSA đã mở rộng máy chủ web của họ (tiền thân của Apache httpd) với công nghệ có tên CGI cho phép gọi các chương trình cụ thể từ máy chủ web có thể tạo HTML (hoặc nội dung khác) một cách nhanh chóng. Điều này thật tuyệt khi mọi người có thể làm tất cả mọi thứ. Một ngôn ngữ thường được sử dụng tại thời điểm đó cho mục đích đó là Perl. Perl là một ngôn ngữ mạnh trong xử lý văn bản, là một thuộc tính quan trọng để xử lý dữ liệu yêu cầu HTTP và tạo HTML. Vì vậy, mọi người đã sử dụng nó.
Nhưng có một vấn đề: Đối với mỗi yêu cầu, máy chủ web phải chạy một chương trình bên ngoài, Perl phải khởi tạo và chạy tập lệnh. Điều này gây ra khá đau đầu. Một giải pháp là mod_perl sắp ca. 1997. mod_perl là một mô-đun cho máy chủ web Apache nhúng trình thông dịch Perl trực tiếp vào quy trình máy chủ web để không cần khởi động thêm.
Nhưng một lần nữa cách tiếp cận này có một vấn đề: mod_perl cực kỳ mạnh mẽ và có quyền truy cập vào cấu hình máy chủ hoàn chỉnh. Bạn không thể sử dụng một máy chủ để lưu trữ nhiều máy khách độc lập vì chúng có thể dễ dàng gây hại cho người khác - có thể do mục đích hoặc do vô tình. Và đó là nơi PHP đến.
PHP được xây dựng theo cách mà nó có thể chạy như mô-đun Apache (do đó không có lần khởi động cho mỗi yêu cầu) nhưng cung cấp một môi trường không chia sẻ giữa các yêu cầu. Khi một yêu cầu được thực hiện, tất cả thông tin đã bị mất và một yêu cầu tiếp theo đến một máy chủ ảo khác sẽ được cung cấp độc lập. PHP cũng cung cấp các tính năng để hạn chế quyền truy cập (safe_mode, open_base_dir). Với lựa chọn kiến trúc đó, các công ty có thể cài đặt PHP trên máy chủ của họ và cung cấp cho khách hàng quyền truy cập FTP (hoặc tương tự) để tải lên các tệp của họ và lưu trữ nhiều khách hàng trên một máy mà không cần nhiều công việc. Điều này gây ra một cuộc cạnh tranh dẫn đến giá rẻ cho lưu trữ dựa trên PHP làm cho PHP trở thành một nền tảng phổ biến.
Ngoài ra, PHP có một số lợi ích so với Perl, như cho phép trộn mã HTML và PHP hoặc truy cập trực tiếp vào các biến yêu cầu (xem thêm register_globals) mà trong Perl khó hơn (phân tích tùy chỉnh hoặc phụ thuộc vào CGI.pm) mà các nhà phát triển thích.
Một khía cạnh khác làm cho PHP thành công trong những ngày đó là hỗ trợ tốt trên Windows. Bắt Perl hoặc các ngôn ngữ khác hoạt động trên Windows rất khó, nhưng vào thời điểm đó, nhiều nhà phát triển sử dụng Windows tại nhà và ảo hóa hoặc các thùng chứa vẫn chưa phải là một điều. PHP đã chạy dễ dàng trên Windows để mọi người có thể sử dụng nó để phát triển và sau đó đóng gói các tệp và triển khai trên Linux. Ví dụ với Perl, bạn sẽ phải có được bản phân phối perl chính xác và sau đó kiểm tra xem các mô-đun nào có sẵn, v.v.
Những ngôn ngữ khác thì sao? Các ngôn ngữ được biên dịch như C hoặc C ++ không bao giờ có lực kéo vì kịch bản phục vụ thị trường phát triển nhanh hơn tốt hơn. Java tồn tại, nhưng các máy ảo Java yêu cầu nhiều tài nguyên hơn và lưu trữ chia sẻ theo cách mà PHP hỗ trợ, điều đó khó có thể thực hiện được. Đầu tư vào phần cứng là cách cao hơn. ASP (như tiền thân của ASP.Net) đã bị ràng buộc với nền tảng Windows, giới hạn nó cho các tổ chức đã chạy Windows và không sợ chi phí cấp phép và một lần nữa không hỗ trợ lưu trữ chia sẻ.
Các công nghệ khác được sản xuất nhưng là thương mại (Cold Fusion hoặc Netscape Server với JavaScript phía máy chủ) giới hạn phạm vi tiếp cận của chúng hoặc không vượt quá tầm với của chúng cho đến khi Ruby-on-rails xuất hiện, có lẽ là môi trường đầu tiên nhận được rất nhiều sự chú ý, nhưng vào thời điểm đó, PHP đã rất phổ biến với một cộng đồng lớn và phần mềm được thiết lập tốt (như Wordpress hoặc Drupal) khiến nó khó cạnh tranh - đặc biệt là khi sự phát triển của PHP không bao giờ dừng lại và vẫn đang tiếp tục.