Vous avez dit serveur ?

Mais il n’y aura que moi et moi pour mes développements, je n’ai pas de serveur, j’en ai besoin ?

Oui, il vous en faudra un, et nous allons vous expliquer pourquoi  ;)

Le rôle du serveur

Si vous vous engagez dans le développement web en général, sachez que sur Internet, il y a toujours au minimum deux intervenants :

  • le client, c’est vous ;)
  • le serveur, qui est l’ordinateur où est enregistrée (on dira plutôt hébergée) la page que vous demandez

Comme au restaurant, vous faites votre commande pour la cuisine : il faut donc être au minimum deux1. Vous comprenez maintenant pourquoi c’est nécessaire. Et c’est donc ce que nous vous proposons de vous aider à mettre en place.

Cela peut vous paraître étrange, surtout parce que vous n’avez pas besoin d’un serveur si vous ne faites que du HTML avec du CSS. En fait, c’est parce que votre navigateur comprend les langages suivants :

  • HTML, avec ses variantes XHTML et ses différentes versions
  • CSS, qui permet de spécifier la mise en page de documents HTML
  • JavaScript, qui permet entre autres les animations et le fait que la page ne se recharge pas complètement quand vous cliquez sur +1 sur les forums de ce site par exemple
  • XML, un format de données qui a inspiré HTML

Vous connaissez probablement les deux premiers, et avez entendu parler des autres. Ce qu’il faut retenir ici, c’est que le PHP n’est pas compris par un navigateur.

Mais si mon navigateur ne comprend pas le PHP, comment peut-il afficher des pages qui ont été écrites avec ? D’ailleurs, il affiche bien les pages qui ont une extension .php !

Alors attention, ce n’est pas parce que l’adresse de la page contient .php que c’est du PHP que votre navigateur manipule. Cela veut juste dire qu’on accède à un fichier qui, sur le serveur, contient du script PHP. Et ce script PHP va en fait être utilisé pour fournir à votre navigateur quelque chose qu’il comprend, soit… du HTML, principalement. ;)
Mais pour que PHP puisse fournir du HTML, il vous faut quelque chose qui comprenne le PHP… un serveur !


  1. les self-services n’existent pas

Pour discuter avec un serveur : le protocole HTTP

Quand un client discute avec un serveur web, ils utilisent une "forme de discussion" spécifique : le protocole HTTP1. Pour simplifier, c’est juste une manière de formuler les demandes (appelées requêtes) et les réponses.

Continuons un instant avec notre exemple de restaurant.
Quand vous êtes dans un restaurant, soit vous savez ce que vous allez commander, soit vous regardez la carte et choisissez en conséquence. Vous passez donc votre commande.
Imaginons que vous avez commandé un steak de cheval avec des frites. Vous ne vous attendez pas à ce que l’on vous serve un steak cru et des pommes de terre non seulement crues aussi, mais en plus entières : vous attendez que la cuisine vous transforme les divers ingrédients de base en une viande cuite à point et des frites croustillantes, bref, un plat que vous pourrez manger.

C’est un peu similaire sur Internet quand vous souhaitez afficher une page.
Votre navigateur est ouvert, et soit vous savez où vous voulez aller et vous entrez l’adresse directement, soit vous regardez les liens proposés et en choisissez un. Quand vous validez l’adresse que vous avez tapée ou que vous cliquez sur un lien, vous envoyez une requête. Le serveur va se charger de la "cuisine", soit d’interpréter les scripts qu’il est en mesure d’interpréter, et il vous répondra avec une page que vous pourrez voir dans votre navigateur. Ainsi, vous ne recevez pas de code que votre navigateur ne comprendra pas.

Vous l’aurez compris :

  • la cuisine du restaurant, c’est le serveur d’hébergement
  • le client, c’est votre navigateur

Tout comme dans un restaurant vous faites votre commande au serveur (ne pas confondre la personne et la machine :p ), avec votre navigateur vous envoyez la requête par HTTP. Voici donc une autre raison de la nécessité d’avoir un serveur sur votre machine si vous faites du PHP.

Mais quand je faisais simplement du HTML / CSS, je n’avais pas de serveur, donc je n’utilisais pas HTTP ! Pourquoi ça fonctionnait ?

Les navigateurs connaissent et utilisent HTTP, mais peuvent aussi accéder aux fichiers de votre ordinateur sans avoir besoin de ce protocole. Et comme le HTML est compris par le navigateur, vous pouvez afficher des pages ainsi.
Mais pour des scripts en PHP, vous devez les faire "passer en cuisine" si vous ne voulez pas de la viande et des patates crues que votre code soit considéré comme du texte brut. Essayez d’ouvrir un fichier PHP en utilisant le menu de votre navigateur ou le raccourci Ctrl + O. Soit vous verrez le code comme du texte, soit vous aurez une fenêtre de téléchargement vous demandant où enregistrer votre fichier. Et ce n’est pas vraiment ce que nous souhaitons, n’est-ce pas ?

Ceci implique que, au contraire des fichiers HTML, les fichiers PHP ne peuvent pas être ouverts pour être interprétés en faisant un double clic dessus. Vous devez passer par le protocole HTTP pour discuter avec le serveur.

Une autre raison encore : le cas d'AJAX2

Peut-être avez-vous entendu parler d'AJAX, et vous vous préparez à en utiliser pour votre site. Sachez qu'AJAX ne peut être utilisé qu’avec un serveur.

Si votre navigateur peut accéder aux fichiers de votre ordinateur sans utiliser HTTP (en fait, sans envoyer de requête), ce n’est pas le cas de l’objet XMLHttpRequest fourni par votre navigateur, qui est à la base d'AJAX, et qui (comme son nom le laisse penser) construit des requêtes. On ne parle pas de requête pour accéder à un fichier sur votre machine alors que vous n’avez pas de serveur.

Ainsi, si vous vous préparez à utiliser AJAX, il vous faut aussi un serveur, même sans PHP.


  1. HyperText Transfert Protocol
  2. Asynchronous Javascript and XML

Maintenant que nous savons qu’il nous faut un serveur, il ne manque plus qu’à l’installer !

Rendez-vous au chapitre suivant.  :)