Anything complex will require back end services with may be written in whatever language/framework is best suited for the task. Tie it all together via REST and message queues and find the best solution to each problem.
All the modern Java tooling goodness minus the J2EE nonsense.
My observation is that it generally depends on what kind of people you work with (their experience and their geekiness matters the most), you prefer stability over bleeding-edge, what support you expect from the community, and more importantly, what the technical requirements are for your application.
The language itself (PHP/Python/Ruby/other.) has almost the least impact on what you should choose, in my opinion.
(The movie won't be available till next year, sorry.)
Depending on the details, probably some combination of:
Groovy on Grails, Tomcat, HornetQ, CentOS Linux, PostgreSQL, Redis, Memcache; with the possibility of falling back to plain Java (or even going native with C++) if necessary for performance critical stuff. If absolutely necessary, maybe Thrift for cross-platform RPC.
Note: I'm not making any claim that this is objectively the best stack available in any universal sense. But it's what would be best for me, based on what I know and am productive in.
I'm comfortable in a few languages / frameworks, and each has their merits. If I'm building something with a dataset that I think Django's ORM will work well for me, and having its admin will be a benefit, then Django it is.
If not, almost certainly I'd drop into Tornado + Jinja, and an appropriate backend store.
For some other tasks, PHP might be the right answer.
I'm doing a lot with Django right now, so I'm probably more fluent in it than anything else, but Tornado is really sexy. Kind of a toss up for me.