Here are some (certainly there could be more) of the guiding principles for a new project I'm starting.
I'm curious - given these principles, how would you go about determining the apporpriate technologies to use to build this project? .NET or PHP? SQL Server or mySQL? Silverlight or Flash? I definitely have my own personal preferences, but I don't want that to cloud my judgement. I'd like to use the right tools and technologies for the project.
Any thoughts and/or suggestions?
It looks like you are looking for a golden hammer. There isn't one. It is up to you to decide which is best for the project. .net / php are capable of handling all of this.
If you want an actual iPhone app, naturally none of these will work. However outputting to a device is just a matter of detecting the device and rendering the view accordingly when you are talking about the web platform.
You may want to check out XML and XSLT if you plan on publishing to many domains. It can simplify taking your applications data and rendering the view as well as methods to keep them separate for individual devices etc.
Don't know PHP (and don't like it for that matter), so can only say for ASP.NET:
This is one of those classic "it depends" questions. You certainly want to eliminate technologies that are demonstrably wrong for your project -- you know, like ActiveX for a web site that you'd like Mac users to be able to use :-)
But eliminating the mismatches is pretty easy. And things after that are fairly subjective. The only way to narrow them down is to make some choice. For example: support a wide range of mobile devices. Which ones, exactly? If you want to target multiple platforms, you're almost certainly talking about a web app -- perhaps you've already decided that.
Beyond the specifics of your requirements, which ought to help narrow things down, to me the question is, who is going to actually code it? It makes sense to do your best to leverage whatever those folks already know.
In short, it's hard to answer the "best" question in a vacuum. There will be a dozen combinations of tools and technologies that can do what you want. To choose among them, you need to use your specific requirements and resources to whittle down the list.
Okay, here's the basic answer: you can crack this in .NET, PHP, Java or Python. Within that, you'll find any number of frameworks. Most of these frameworks are production ready.
So, what you and your team know or like becomes a huge issue. Learning a radically different framework will take time. Often personal preference will prove to be the deciding factor.
However, there is one major factor that should be taken into account: cost. Whilst .NET probably has the best tooling of any environment, it's pretty tied to Windows. If you're planning on 100 machines in a server farm, the year on year cost of running your final solution needs to be computed.
Finally, read Release It. The question of how you monitor and instrument your code is probably even more important than any feature you've mentioned.