PHP is not highly complex, and it is highly specialized. PHP was meant to be a web programming language. Perl was meant to be a text manipulation language and a general workhorse. Java was built to be a multi-platform development language. PHP as a web dev language is fantastic -- lots of web-related functionality built-in. Perl has that functionality as Perl Modules, adding on complexities which are not compiled into the language. Java has the same thing -- lots of modules and such that need to be added in to make coding for the web easier and less complex.

True, PHP can't do the millions of tricks that perl and java can do outside of the web world. But PHP can do most everything that a web developer needs to do, and it does it natively. It wouldn't make sense to implement a web server in PHP (although I suppose it might be possible), but it might in Perl or Java. It might be difficult to write an AIM client in PHP, but not so difficult in Perl or Java; but then again, Perl and Java are generalists whereas PHP is very specifically for web development.

If you are doing pure web development, using a language written specifically with that task in mind makes sense. If you are doing some major huge task that encompasses lots of non-web-related work, it would make more sense to use a more general language.

I also agree that PHP gives you a limitation in job opportunities. While PHP is a good language for web development, if that's all you know, you can't understand the general aspects of perl or java, and potentially not know things about typecasting or the problems with declaring everything global. I did perl for 5 years, then PHP for the last 4, and while I don't think my programming skills have suffered, I can't say that they have improved significantly since I've been out of the perl pool.

I program for the web best in PHP because PHP was built for that task; I do other non-web things in perl.