PHP 6 was an ambitious but ultimately canceled version of the PHP programming language. It aimed to solve major problems, especially related to Unicode support. Despite years of development, the project did not reach a stable release. Many of its ideas were later folded into PHP 5.3 and PHP 7. The version number PHP 6 became associated with failure in the PHP community and was skipped when the next major version was released.
In the early 2000s, PHP had become one of the most used server-side scripting languages on the web. However, it lacked full Unicode support, which limited its usefulness in global applications. As the internet expanded, handling multiple languages and writing systems became more important.
PHP 6 development started in 2005. The primary goal was native Unicode support throughout the language. This meant changing how strings worked, rewriting the engine to handle multibyte characters, and updating many functions. Internally, PHP strings were to use UTF-16 encoding, which would allow better handling of international text.
Alongside Unicode support, PHP 6 aimed to modernize the language in other ways, including:
Despite the ambitious plans, PHP 6 struggled with technical complexity—especially around Unicode implementation—and was eventually abandoned.
The PHP 6 project faced technical and organizational problems.
By 2010, it was clear that PHP 6 had failed. The Unicode changes were too difficult to finish. Developers decided to abandon the project and move useful features into other releases.
Several planned features from PHP 6 were included in PHP 5.3, released in 2009. These included:
Other changes that had been delayed by PHP 6 were added in PHP 5.4 and later.
Because the name “PHP 6” had become linked to a failed project, the next major version was called PHP 7. This skipped versioning helped signal a clean break from the old plans.
PHP 7, released in 2015, shared some goals with PHP 6. It aimed for better performance, improved type safety, and modern syntax. However, it did not include full Unicode support. PHP 7 took a more cautious path. Instead of rewriting string handling, it optimized the language for speed and efficiency.
The key differences between the abandoned PHP 6 and released PHP 7 include:
Feature | PHP 6 (Planned)PHP 7 (Released) | PHP 7 (Released) |
Unicode support | Native Unicode with UTF-16 | No native Unicode |
Namespaces | Namespaces | Included in PHP 5.3 |
Type declarations | Limited | Scalar type hints, return types |
Performance | Slower due to Unicode | Much faster than PHP 5 |
Release status | Never released | Stable, long-term support |
PHP 6 is remembered as a turning point in the history of PHP. Though it failed as a release, it taught developers several lessons:
Many of the original PHP 6 ideas were later rethought and included in a more practical form. The process of failure helped the language grow stronger.
The experience also showed that not every technical goal fits well with how a language is used. For PHP, which often runs on shared servers with limited control, performance and compatibility were more important than deep internal changes.
Though PHP 6 never launched, the planned features would have provided several benefits if completed:
Instead, many of these advantages arrived over time in smaller steps through later versions.
Skipping PHP 6 was not only symbolic. It helped prevent confusion. By the time PHP 7 was in development, books, articles, and documentation already referred to PHP 6, even though it never launched. Releasing a new stable version with the same number would have caused problems.
The decision to call the next version PHP 7 sent a message: this was a new and working version, not a continuation of a failed plan.