PHP (PHP Hypertext Preprocessor)

Auteur: Mohamed CHINY Durée necessaire pour le cours de PHP (PHP Hypertext Preprocessor) Niveau recommandé pour le cours de PHP (PHP Hypertext Preprocessor) Supports vidéo non disponibles pour ce cours Exercices de renforcement disponibles pour ce cours Quiz disponible pour ce cours

Page 2: De quoi aura-t-on besoin?

Toutes les pages

Serveur Web

Un serveur Web est généralement constitué de trois grands modules: serveur de fichiers, serveur d'application et serveur de base de données.

Serveur Web

Serveur de fichiers

Un serveur de fichier n'est rien d'autre qu'un espace de stockage ou d’hébergement des fichiers et dossiers constituant le site Web. Il n'applique aucun traitement spécial au contenu des pages Web avant de les renvoyer au client. Dans le jargon des réseaux on parle de partage de données.

Par exemple les fichiers HTML, CSS ou Javascript sont renvoyés au client tel qu'ils sont, le serveur de fichier ne fait que les stocker. C'est le navigateur qui se chargera de les exécuter, d'ailleurs on parle de langages coté client.

Vous vous souvenez dans les cours précédents, je vous ai demandé d'enregistrer vos fichiers n'importe où sur votre ordinateur, car c'est la navigateur qui s'occupera de les exécuter. En fait, votre ordinateur est rendu un serveur de fichiers qui ne fait que stocker vos pages Web, mais c'est le navigateur qui fait tout le reste.

Serveur d'application

Le serveur d'application intervient quand le document demandé par le client contient des scripts CGI (écrits en PHP ou ASP par exemple). Les scripts CGI sont d'abord exécuté par le serveur, particulièrement par le serveur d'application, puis le résultat d’exécution est renvoyé au client. A la fin le contenu renvoyé ne contient aucune trace des scripts CGI et tout ce qu'il renferme ce sont les langages coté client conventionnels tels que HTML, CSS et Javascript que le navigateur est censé exécuter à son tour.

En général, quand on parle d'un serveur Web (en tant que logiciel et pas en tant que machine) on fait souvent allusion au serveur d'application qui renferme le moteur d’exécution des scripts CGI.

Serveur de base de données

Le serveur de base de données n'est rien d'autre que le SGBD (Système de Gestion de Base de Données). Il s'agit d'un logiciel qui gère la base de données et qui est installé au sein du serveur Web.

Les sites Web dynamiques écrits à base des langages CGI tel que PHP reposent généralement sur des bases de données. Le contenu que vous visualisez sur un site dynamique n'est généralement pas intégré directement au sein du code HTML lors de la création, mais il provient d'une base de données. Le fait de modifier les entrées de la bases de données revient à modifier le contenu visible sur le site Web.

Les principaux serveurs de bases de données (ou SGBD) connus sont: Oracle, MySQL, PostgreSQL, Microsoft Access, Microsoft SQL Server, Informix, dBase, SQLite...

Préparer son serveur

Désormais, il n'est plus question de mettre nos pages Web n'importe où sur notre ordinateur. En effet, il y aura un emplacement qui sera dédié à l'hébergement et qui sera géré par le logiciel faisant office de serveur Web.

Parlant justement de serveur Web, il faut d'abord savoir que ce serveur exécute les requêtes HTTP (HyperText Transfer Protocol) qui est le protocole de communication utilisé pour transférer les données hypertextes entre le client et le serveur.
Un autre protocole peut être pris en charge par le serveur Web, il s'agit de HTTPS (pour HyperText Transfer Protocol Secure, la version sécurisée de HTTP).
Il existe plusieurs serveurs Web. Certains sont multi-plateforme et peuvent être installés sur divers systèmes d'exploitations comme Apache ou Lighttpd et d'autres qui sont propres à un système particulier comme IIS de Microsoft qui est destinée à Windows.

Cependant, Apache reste le serveur Web le plus connu et le plus adapté pour exécuter PHP.

Serveur Apache

Apache est un serveur Web libre distribué sous la licence Apache. Il est le serveur Web le plus populaire et le plus utilisé par les hébergeurs à travers la toile.

Apache Server prend en charge de nombreux modules supplémentaires qui lui confèrent des fonctionnalités plus étendues comme l’interpréteur des langages PHP, Perl, Python et Ruby, le module CGI, le module URL Rewriting, le module Proxy... Donc Apache ne reconnait pas automatiquement la syntaxe PHP qu'après avoir activé son module.

Parmi les atouts de Apache c'est la portabilité. En effet, il est supporté par de nombreux systèmes d'exploitation, principalement Unix/Linux, Mac OS, Windows, BSD...

Installation d'Apache Server

Pour faire simple, je vais vous montrer comment installer le serveur Apache sur Windows. D'ailleurs c'est très facile. Cependant, pour les autres systèmes d'exploitation on verra dans les cours prévus pour le système et sécurité comment installer et configurer correctement les services requis sur un serveur Web destiné à la production, particulièrement sur une plateforme Unix/Linux.

Pour commencer, sachez que l'objectif et d'installer une plateforme de développement et non pas de production. L’essentiel est d'apprendre à utiliser le langage PHP. D'ailleurs les développeurs ont pour coutume de créer une plateforme de développement sur leur propres machines pour faire les tests. Une fois le projet approuvé ils l’hébergent sur un serveur Web de production pour que le site (ou application Web) soit accessible sur la toile (ou au sein d'un réseaux local d'entreprise).

Il existe plusieurs logiciels qui font office de serveur Web sur Windows et qui supportent automatiquement le langage PHP. Les plus connus sont:
  • WAMP: pour Windows, Apache, Mysql & PHP (le P peut aussi désigner Perl ou Python). Il constitue la plateforme de développement la plus utilisée par les développeurs.
  • XAMPP: pour X, Apache, Mysql, PHP & Perl (le X désigne les systèmes d’exploitation Windows, Linux et Mac OS). Il s'agit d'une distribution Apache gratuite et largement utilisée aussi.
  • Easy PHP: similaire au WAMP, était à une certaine époque la plus célèbre des plateformes de développement en PHP sur Windows.
  • ZMWS: pour Zazou Mini Web Server est un serveur Web léger et portable (ne requière pas d'installation).

Vous pouvez utiliser n'importe quel plateforme. De toute façon elles font toutes la même chose. Même si j'ai un léger penchant vers ZMWS je vous recommande d'utiliser WAMP que vous pouvez télécharger directement de son site officiel.

L'installation de WAMP Server est très simple, il suffit de cliquer deux fois sur le fichier téléchargé et suivre les étapes de l'installation. Si vous êtes débutant mieux vaut ne pas changer les paramètres par défaut et suivez l'installation jusqu'à la fin. Une fois le logiciel installé il démarrera automatiquement, sinon vous pouvez le lancer manuellement.

Une fois WAMP Server démarré, vous disposez désormais d'un serveur Web local à votre machine. Pour interroger ce serveur vous pouvez taper sur l'URL de votre navigateur préféré l'adresse http://localhost ou http://127.0.0.1. Ces deux adresses font référence au serveur local (ou boucle locale dans le jargon des réseaux informatiques). Normalement, vous devez obtenir la page propre au serveur qui contient des informations sur WAMP Server. Si c'est le cas, alors votre serveur fonctionne bien, sinon c'est qu'il y a un problème lors du démarrage. D'ailleurs, vous obtenez une petite icone du logiciel sur votre barre des tâche. Si elle est verte, c'est que le serveur fonctionne normalement, si elle est orange c'est qu'un problème a été rencontré lors de la tentative du démarrage et si elle est rouge c'est que je serveur est arrêté.

Sachez que le serveur Web exécute le protocole HTTP. Ce protocole écoute sur le port 80. Si vous avez déjà un logiciel qui utilise ce port, alors il est normal que votre serveur Web ne fonctionnera pas. Vous avez donc deux solutions, soit changer le numéro de port HTTP de WAMP Server (chose que je ne recommande pas pour le moment), ou bien essayer d'identifier le logiciel qui occupe déjà le port 80 et l'arrêter, puis essayer de redémarrer votre serveur local.
Si vous avez du mal à comprendre la signification des protocoles et ports ce n'est pas grave. Car l'objectif de ce cours est d'apprendre à développer en PHP. Quand il sera temps, on verra dans un cours dédié au système comment configurer un vrai serveur Web en mode production et on aura l'occasion de manipuler les protocoles, ports et services.