Parce que dans ce cas le php n'est pas interprété...

On aurait du s'en doute plus tôt.
Le serveur n'écoute qu'un seul port et sur une adresse (de base).
A savoir localhost (ou 127.0.0.1) et un port (généralement tu peux l'oublier le port, c'est le 80 qui est utilisé donc c'est transparent).
Pour faire simple imaginons un serveur web dont la racine est :
C://easyphp/www/script.php
En appelant file://C://easyphp/www/script.php
On obtient un fichier html... (clic droit et afficher le code source et on voit tout le code PHP qui n'a pas été interprété).
Par contre en appelant
http://localhost/script.php on aura bien le php exécuté.