Module 01 - Installation et premiers pas

Module 01 : Installation et premiers pas en PHP, rappels sur le Web

Portrait général de PHP #

D’où vient PHP ? #

Plusieurs implémentations de PHP #

PHP dans le monde réel #

bg right contain

PHP fait tourner le web mondial !

Source w3techs survey

Qui utilise PHP ? #

Pourquoi utiliser PHP ? #

Installer PHP #

Suivre les instructions données sur le site officiel en fonction de l’OS de votre machine.

Suivre le tutoriel officiel.

Ajouter le répertoire où se strouve php.exe (répertoire issu de l’archive) sur votre PATH.

Ouvrir une invite de commande et tester l’installation :

php -v
PHP 8.4.15 (cli) (built: Nov 20 2025 19:00:52) (NTS)
Copyright (c) The PHP Group
Built by Debian
Zend Engine v4.4.15, Copyright (c) Zend Technologies
    with Zend OPcache v8.4.15, Copyright (c), by Zend Technologies

Sur macOS #

  1. Installer le gestionnaire de paquets brew ;
  2. Ajouter le repértoire au PATH :
echo "export PATH=/opt/homebrew/bin:$PATH" >> ~/.bash_profile && source ~/.bash_profile
  1. Installer PHP avec brew :
brew install php

Installer l’IDE Visual Studio code #

Configurer son IDE, rendre sa vie meilleure #

Dans File > Preferences > Snippets, créer un fichier php.json. Placez-y la configuration de snippets suivante :

{
 "php": {
  "prefix": "php",
  "body": [
   "<?php $0 ?>"
  ],
  "description": "php tag"
 },
 "ph": {
  "prefix": "ph",
  "body": [
   "<?php",
   "$0"
  ],
  "description": "php only one tag"
 },
}

Ces snippets vous éviteront d’avoir à ouvrir et fermer des balises PHP à la main à chaque fois ! Testez-les.

Votre premier script PHP #

Créer un fichier hello-world.php :

hello, world

Exécuter :

php hello-world.php

Votre premier script PHP, avec du code php #

<html>
    <body>
        <?php echo "hello, world"; ?>
    </body>
</html>
<?php echo "hello, world"; ?>
php index.php

Que s’est-il passé ? #

Un script PHP s’exécute sur la Machine Virtuelle (VM) ou interpréteur PHP. Il analyse le fichier byte par byte :

PHP est spécialement adapté (conçu pour à la base) pour produire des documents #

Grâce à son fonctionnement, PHP est parfaitement adapté pour fabriquer des documents dynamiques (contenu dynamique placé entre balises PHP) :

N’importe quel format !

Modèle d’exécution #

bg right contain w: 80%

Machine virtuelle PHP #

La machine virtuelle PHP, dont le cœur est le Zend Engine, est conçue pour être à la fois hautement configurable, modulaire et adaptable à différents contextes d’exécution.

La machine virtuelle PHP :

Configurer PHP au runtime (comportement à l’exécution) 1/2 #

Via des fichiers php.ini (format INI).

Dans un script, pour afficher la configuration complète de la VM PHP, utiliser la fonction phpinfo() :

Créer un fichier index.php avec le contenu suivant :

<?php
//Afficher toute la configuration de PHP. Très pratique pour voir les fichiers ini chargés notamment,
//si l'upload de fichiers est autorisé, quelle taille max, etc. (cf WordPress)
phpinfo();

Configurer PHP au runtime (comportement à l’exécution) 2/2 #

Ou directement depuis le terminal :

# Affiche toutes les informations (idem Ă  phpinfo())
php -i
# Liste tous les fichiers de configuration utilisés
php --ini
# Avec PHP 8.5 ! Affiche directement les valeurs qui diffèrent des valeurs par défaut.
php --ini=diff

Il existe de nombreuses directives pour configurer PHP à l’exécution, utiles notamment pour adapter le comportement en fonction des environnements et du site web.

On reviendra pus tard dans la formation sur la configuration de PHP (dev vs prod), petites choses à savoir pour votre site WordPress…

PHP (CLI) #

Exécuter directement le script dans le terminal :

php votre-script.php

La sortie (résultat) sera affichée dans le terminal (sortie standard).

Configuration personnalisée (fichier .ini) #

Créer un fichier de configuration personnalisé config.ini dans le répertoire courant :

;Active la prise en charge des uploads de fichiers via HTTP.
file_uploads = On
;Limite la mémoire maximale qu’un script PHP peut consommer. Protège contre les scripts trop gourmands.
memory_limit = 64M
;Taille maximale acceptée pour l’ensemble du corps d’une requête POST. Doit être >= à upload_max_filesize.
post_max_size = 64M
;Taille maximale d’un fichier individuel envoyé via HTTP POST.
upload_max_filesize = 64M

Inspecter les configurations appliquées :

php -c config.ini --ini=diff

Utiliser une configuration personnalisée #

Exécuter directement le script dans le terminal, en chargeant le fichier de configuration :

php -c config.ini index.php

Serveur web intégré de PHP #

PHP dispose d’un serveur web intégré, utilisant toujours la SAPI CLI, comme le terminal.

Ce serveur web local vous permet de lancer et développer un site web comme si vous interrogiez un vrai site web (via HTTP)

Très utile pour le développement (et pour nous !)

Ne pas utiliser en prod !

Préparons notre premier site web #

Dans le fichier index.php, placer le code suivant :

<!DOCTYPE html>
<html lang="fr">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Mon site web</title>
</head>
<body>
 <h1>Notre premier site web</h1>
 <p>Nous sommes le <?php echo date( 'd/m/Y' ); ?> et il est <?php echo date( 'H:i' ); ?></p>
</body>
</html>

Utiliser le serveur web intégré de PHP #

  1. Ouvrez un terminal/invite de commandes ;
  2. Placez-vous Ă  la racine du projet Ă  servir comme un site web (au mĂŞme niveau) :
cd chemin/des/fichiers/php/a/servir
# Servir tout le contenu du dossier courant (attend un fichier index.php !)
php -S localhost:3000
# Alternative : servir le dossier 'public' (contient le site)
php -S localhost:3000 -t public
  1. Avec votre navigateur favori, se rendre à l’URL http://localhost:300.

Le serveur web intégré de PHP attend un fichier index.php par défaut. Penser à toujours utiliser un fichier index.php comme point d’entrée de votre site web.

Que s’est-il passé ? #

  1. Avec votre navigateur, vous avez demandé la ressource racine(/) à l’URL http://localhost:3000 ;
  2. Votre navigateur a envoyé une requête HTTP GET / ;
  3. Le serveur web intégré de PHP a reçu votre requête et a exécuté le script index.php associé à la ressource demandée(comportement par défaut) ;
  4. Le script a écrit son résultat sur la sortie standard ;
  5. Le serveur web a récupéré ce résultat (une chaîne de caractères, du texte !), l’a placé dans le corps d’une réponse HTTP et l’a retourné au navigateur ;
  6. Le navigateur, à réception de la réponse HTTP, a chargé le résultat (le code HTML) puis l’a peint (pixels) sur l’écran ;
  7. Vous consultez la page web !

Guide de survie dans le shell (terminal ou Invite de Commandes Windows) #

Inspecter et se déplacer

Action UNIX (GNU/Linux, macOS) Windows
Afficher où je suis (répertoire courant) pwd cd
Afficher le contenu du répertoire courant ls dir
Se déplacer cd /foo/bar cd C:\foo\bar

Pratique #

  1. Ajoutez une feuille de style CSS Ă  votre site web pour ajouter de la mise en forme (couleurs, marges, fonts, etc.).
  2. Ajoutez une (ou plusieurs) image(s) sur votre page web. Pour cela, créer un dossier img et placez-la dedans. Utilisez l’élément HTML <img>.
  3. L’heure affichée n’est pas correcte, pourquoi ? Réglez le problème en définissant la timezone correcte. Pour cela, utilisez la fonction PHP date_default_timezone_set ;
  4. Ajouter une font personnalisée pour votre document HTML. Allez sur Google Fonts, choisir une font qui vous plait, téléchargez-là et utilisez-là pour le texte de votre page web en utilisant le code CSS suivant :
html{
    width: 80%;
    font-family: "myFont", serif; 
}

@font-face {
  font-family: "myFont";
  src: url("votre-font.ttf");
}

*AMP stack : Lamp, Wamp, Mamp #

Le serveur local intégré de PHP est largement suffisant pour développer des petits sites web, tester ses idées, etc.

Mais si besoin de mettre en place une base de données, avoir un environnement complet clé en main, on peut **utiliser la stack *AMP** :

Pour aujourd’hui, le serveur web intégré de PHP sera suffisant !

Homework #

Sur Windows (WAMP)

Installez Wamp Server et suivez le guide.

Sur macOS (MAMP)

Installez MAMP. Utilisez la documentation au besoin.

Pas la version pro !

Sur GNU/Linux, Ubuntu/Debian (LAMP)

À vous d’installer Apache, MySQL et PHP (deja fait !) et configurer les Virtual Hosts d’Apache ! Suivez ce guide

Fonctionnement du web (en bref ?) #

Se construire un modèle simplifié mais utile.

Internet n’est pas le web #

bg right fit

Internet :

Internet n’est pas le web #

Protocole : Règles et conventions régissant l’échange de données entre ordinateurs.

Qu’est ce que le web ? Un système hypertexte distribué #

“Un système d’information hypertexte universel où les enjeux de généralité et de portabilité sont considérés comme les plus importants” (Tim Berners-Lee, inventeur du web)

L’hypertexte, une invention plus ancienne que le web #

Hypertexte : un texte qui fournit des liens entre des éléments clés qui permettent aux utilisateurs de naviguer à travers l’information de manière non linéaire (sans tout lire dans l’ordre)

The Mother of All Demos : Un système hypertexte (et bien plus !) déjà présenté en 1965 #

bg right:30% contain

Douglas Engelbart, un spécialiste des interactions homme-machine, fait une démonstration avec ses équipes dispersées aux USA, restée dans l’histoire : “The Mother of All Demos” : souris et pointeur, GUI, visioconférence, courier électronique et un système hypertexte.

Cette conférence montre déjà, dès 1965, l’essentiel (voire plus) de ce que nous faisons aujourd’hui avec les machines. En termes de démonstration publique, elle préfigure exactement le type de présentations dont Steve Jobs s’est inspiré pour lancer l’iPhone. Et le film/montage a une ambiance à la Terry Gilliam

Surfing the web, le web est ouvert #

C’est grâce aux hypermédias, à la généralité et l’uniformité de son interface (et aux respect de certaines contraintes de design) que le web évolue depuis plus de 30 ans !

Surfing the web, le web est simple #

Le web est un système populaire, car il permet à des personnes sans connaissances techniques de réaliser des choses utiles.

Sur le web, un agent humain utilise les mêmes moyens qu’un agent programmable pour réaliser des actions (clients et services web ou web API). Par ex., si vous utilisez des plateformes comme Make ou Zapier, les agents que vous programmez envoient, comme vous, des requêtes HTTP GET et POST. Ils suivent des liens et soumettent des formulaires.

Le web humain est juste un (petit) “sous-ensemble” du web programmable.

Un peu d’histoire #

Un peu d’histoire 1/2 #

Le web en quelques dates clefs (non exhaustif) #

Date Évènement
1990 Invention du web par Tim Berners-Lee, première page web en ligne, HTML 1 et HTTP 1.0
1993 Navigateur NCSA Mosaic (développé alors que le web ne contenait que 200 sites), balise img
1994 HTTP 1.1, Netscape Navigator (navigateur dominant dans les années 1990, supplanté par Internet Explorer), nombre de sites explose, annuaire web/moteur de recherche Yahoo!, création du World Wide Web Consurtium (W3C)
1995 Balise table, création de JavaScript (Netscape)
1997 HTML 4.0
1998 Le W3C crée le standard XML pour remplacer à terme le HTML, création du CSS, XmlHttpRequest, Google, Netscape ouvre ses sources
2000/2006 Évolutions du HTML, explosion de la bulle Internet
2001 Lancement de du projet Wikipédia
2004 Création du WHATWG, première version de Firefox
2004/2006 E-commerce explose, Web 2.0: AJAX, apparition de géants comme Amazon, Facebook, Youtube et autres réseaux sociaux
2010 HTML5, abandon XHTML2, frameworks front-end, CSS Grids, Responsive web design
2014 Le milliard de sites dépassé

Comment fonctionne le web ? #

Architecture du web : client/serveur #

Vision simplifiée mais un modèle mental utile

Architecture du web : client/serveur, modèle un peu plus détaillé #

w:1000

Sur quelles technologies est bâti le Web #

Le web, techniquement, c’est trois technologies :

Brique 1 : Le protocole HTTP (les messages) #

Le plus important !

HyperText Transfer Protocol (HTTP) :

Concrètement c’est un format de message pour que le client et le serveur se comprennent ! Une requête HTTP 1.1 est juste une chaîne de caractères. Elle voyage sur le réseau Internet jusqu’à son destinataire.

RequĂŞtes HTTP GET #

bg right contain

Sur le web humain, vous utilisez que deux méthodes HTTP :

GET

RequĂŞtes HTTP POST #

bg right contain

POST

RequĂŞte HTTP #

bg right 80%

Contenu d’une Requête HTTP (envoyée par le client) :

Les Headers HTTP permettent de moduler la demande (préciser des choses)

Réponse HTTP #

bg right 80%

Contenu de la Réponse HTTP (envoyée par le serveur) :

Requête et réponse exemples plus détaillés #

bg right 90%

Le serveur analyse la méthode HTTP (intention) et l’URL (ressource demandée), puis produit une réponse.

Le protocole HTTPS #

HyperText Transfer Protocol Secure (HTTPS) :

Brique 2 : Anatomie des URLs #

URL : Uniform Resource Locator, une chaîne de caractères décrivant le nom et l’emplacement d’une ressource (adresse d’un document sur le web)

Exemple :

http://example.com/un/chemin/page.html?firstname=tim&lastname=berners%20lee

Brique 3 : HTML #

Vous connaissez déjà il me semble, on passe ?

Les briques cousines #

Les autres langages du web, interprétables par votre navigateur (client) :

RIP Adobe Flash

Pour résumer #

w:700

Web statique vs Web dynamique #

D’un système hypertexte, orienté documents, aux applications web.

Page web statique #

Page web dynamique #

bg right w:500

Page web statique et dynamique, en coulisses #

w:600

Retour sur notre environnement local #

Nous sommes en train de développer un site web dynamique (avec PHP) sur un serveur local. Dans cet environnement de développement, le client et le serveur sont tous les deux sur notre machine.

bg right contain

En résumé #