Why I wrote this
I write this not to start a flame war or become involved in a religious debate about the right language for the right job. I recognize the value of PHP to the current IT economy. It provides tremendous strength in time to market and light-weight web development apps. I am attempting to point out the short-falls of PHP in relation to its use as an enterprise web development platform, not to discount it as a web development language in general. These are the conclusions I've drawn after a significant amount of research on this subject, they are the opinions of only myself, but I believe anyone who is considering PHP for a large-scale development effort will find this information valuable in making an intelligent decision.
PHP lacks maturity
PHP has only been around for a very short amount of time, especially in comparison to other popular web development languages like Perl. Even Java, a language geared towards web development, has been around longer. This may not seem like a huge issue until you bury yourself in a project and realize that the language doesnt yet provide support for some intricate task youre trying to accomplish. Case in point, PHP lacks support for doing embedded evals. Further, the actual syntax for simple things like variable numbers of arguments to functions is still evolving. Further, there is no unity in the syntax of PHP functions (dont believe me? Try to write a set of operations that maintain a sorted list PHP keeps changing the rules!)
The PHP development team is reckless
The lack of maturity in PHP is further illustrated in the documentation, which is incomplete and does not get updated between revisions. Even the core specification seems to change between minor versions, the likes of which have no documentation other than the source code itself. Additionally, my experience with PHP in a mass-deployment environment of approximately 12,000 customers has proven that with each release of PHP comes new bugs that go far beyond slight changes in behavior of the code. They actually BREAK core functions in the language! (the upgrade from 4.2.3 to 4.3.0 actually broke sprintf()! (Why someone was messing with a core function like sprintf is beyond me). The end result of this being that, in my experience, not a single deployment of PHP (be it a bug fix or version upgrade) has ever happened without at least 100+ web sites of ours breaking due to some major bug in the release often with things the developers had no business messing with in the first place. Further, the PHP team, while quick to release patches for security bugs (which tend to break other things, I might add) are often painfully slow to issue patches to known bugs (example, the $PHP_SELF problem in 4.3.0 still has no resolution, yet its a core function used in nearly every PHP application. Their answer instead was to issue a workaround, requiring each site using PHP_SELF to change their code).
PHP requires a significant amount of wheel re-inventing
Unlike more mature languages such as C++ or Perl, the PHP libraries are severely lacking. Indeed, in nearly every case where a connector or API is needed to talk to some other application or product, the work must be done by hand. Other languages such as Perl really shine in this area where plug-ins and modules are readily available for nearly every task imaginable (from SSH to EDI to X10, its probably already been done).
PHP was never designed for large scale applications
The primary design goal of PHP was to produce a light-weight application that would make things as simple as possible to install and start using. In some cases, this meant that features normally available to experienced programmers had to be left out. For example, PHP lacks support for private namespace so there is no way to create three-tiered applications that separate business logic and presentation code. Further, there is no mechanism in place for creating reusable code modules. Finally, PHP was not designed for general-purpose programming (although it now provides some hooks for using PHP from the command line, but those who understand PHP or scripting in general realize that this would be the wrong tool for any command line job). Understand that PHP is well-suited for the common tasks associated with web-scripting. However, experienced programmers will find it drastically limiting to expand beyond that scope with PHP, thus forcing the programmer to bring two development platforms to a project that could have been easily done with one. In large scale projects, a general-purpose language will always outweigh the benefits of a specialized language as the scope of the project grows.
Conclusion
PHP is a tremendously valuable development platform provoding the scope of the project stays within the realm of what PHP was designed for (extremely light-weight quick-to-market apps). Beyond that scope, PHP is very much comparable to a toy in light of better alternatives on the larger scale. Platforms such as Java, C++, or even Perl (using Mason for embedded content and template management) should be considered heavily before banking on PHP as the proper solution to a big problem.