Intégration Web – Installation et configuration d’un système WAMP

LEÇON PRATIQUE

 

A savoir avant de commencer

Deux façons de procéder :

  1. Installer chaque composant séparément (Apache, PHP et MySQL)
  2. Installer un bundle ou WAMP Stack qui inclut les 3 softwares (genre wampserver.com)

Nous allons prendre la première option pour les raisons suivantes :

  • pour apprendre un maximum de choses sur ces 3 éléments critiques de notre infrastructure web
  • pour avoir de la souplesse au niveau de la configuration et du maintenance de notre infrastructure web
  • avoir un environnement de développement qui ressemble à un vrai environnement de production

 

Obtenir les softwares

Pour éviter de devoir tout télécharger, l'enseignant va fournir les softwares pour Apache, PHP et MySQL, ainsi que les scripts de lancement etc.

En dehors de la classe, pour savoir comment choisir, trouver et télécharger les softwares et les scripts : voir les instructions sur cette page.

 

AVERTISSEMENT : Problèmes de configuration liés aux SLASH et ANTISLASH

Sous Windows, dans les chemins, les dossiers sont séparés par des antislash (\) tandis que sous Linux/Unix la convention est d'utiliser le slash (/). Comme les softwares Apache, PHP et MySQL sont valables partout, les fichiers de configuration exigent parfois la séparation de dossier par les slash même sur un système Windows.

Il faut donc faire très attention à employer soit le slash soit l'antislash comme spécifié dans les instructions ci-dessous.

 

Le dossier racine de l'installation

Nous allons installer plusieurs softwares dans un seul dossier racine qui regroupe tout. Ce dossier racine va se trouver à la racine de votre clé USB ou disque dur externe.

Nous allons faire en sorte que votre clé USB / disque dur externe est reconnu sous la lettre "M". Le dossier racine sera nommé "webserver". Chacun aura donc un dossier racine pour lequel le chemin est le suivant :

                 M:\webserver

Remarque : Si vous voulez installer votre système WAMP ailleurs sur votre clé USB ou disque dur externe, vous pouvez. Mais dans ce cas il faut, dans les instructions ci-dessous, remplacez M:\webserver par le chemin que vous avez choisi.

 

SECTION A : PRÉPARATIONS

 

ÉTAPE 1 : Faire en sorte que votre clé USB / disque dur externe est reconnu sous la lettre "M"

  1. Insérer la clé USB / disque dur externe
  2. Ouvrir l'explorateur Windows (gestionnaire de fichiers).
  3. Faire un clic-droit sur "Ordinateur" et choisir "Gérer"
  4. Choisir "Gestion des disques"
  5. Repérer votre clé USB / disque dur externe et faire un clic-droit dessus
  6. Choisir "Modifier la lettre le lecture et les chemins d'accès..."
  7. Cliquer "Modifier", choisir la lettre "M" puis appliquer ce changement en cliquant sur "OK"
  8. Vérifier que la clé USB / disque dur externe apparaît bien sous la lettre "M" dans l'explorateur Windows

 

ÉTAPE 2 : Création du dossier racine webserver

  1. Ouvrir l'explorateur Windows et cliquer sur votre clé USB / disque du externe (lettre "M")
  2. à la racine de la clé USB / disque dur externe, créer un dossier qui s'appelle webserver

 

ÉTAPE 3 : Création des sous-dossiers wamp64 et www

  1. Dans l'explorateur Windows ouvrir le dossier racine M:\webserver
  2. Créer un dossier nommé wamp64 (pas de majuscules) qui aura comme rôle de contenir tous les softwares de notre architecture WAMP
  3. Au même niveau créer un autre dossier nommé www (pas de majuscules) qui aura comme rôle de contenir tous vos pages/sites
  4. On devrait avoir donc un dossier M:\webserver\wamp64 et un autre M:\webserver\www

 

ÉTAPE 4 : Récupérer les fichiers d'installation de l'enseignant

  1. L'enseignant vous communiquera l'emplacement des fichiers à copier
  2. Copier tous les fichiers vers le dossier M:\webserver\wamp64

 

ÉTAPE 5 : Vérifier la présence du composant VC++ Runtime

Composant système nécessaire pour exécuter la version Windows du serveur web Apache.

  1. Ouvrir le Panneau de Configuration Windows
  2. Choisir Programmes et Fonctionnalités
  3. Essayer de trouver la ligne qui commence par Microsoft Visual C++ 2012 Redistributable (x64).
  4. Si la ligne n'est pas présente il faut alerter l'enseignant.

 

SECTION B : INSTALLATION APACHE

 

ÉTAPE 6 : Installation d'Apache

  1. Dans le dossier wamp64  trouver le fichier zip pour l'installation d'Apache (c'est le fichier zip qui commence par httpd )
  2. Extraire le contenu du zip directement dans le dossier wamp64 (clic-droit sur le fichier zip et choisir "extraire ici"). Selon la vitesse de votre port USB / clé / disque dur cette opération peut durer plusieurs minutes. ATTENDRE LA FIN DE L’OPÉRATION avant de passer à la suite.
  3. On devrait voir apparaître un dossier "Apache24 " et deux fichiers texte. Supprimer les deux fichiers texte et le fichier zip d'Apache (on n'en a plus besoin).
  4. A vérifier : le chemin complet du dossier Apache est donc M:\webserver\wamp64\Apache24

 

ÉTAPE 7 : Configuration d'Apache

  1. La configuration par défaut du serveur Apache (au moins dans cette version fournie par Apache Lounge) présume une installation dans C:\Apache24 donc il nous faut reconfigurer Apache avec le dossier que nous avons choisi (M:\webserver\wamp64\Apache24) :
    • le fichier principal de configuration Apache est conf\httpd.conf (trouvable donc ici M:\webserver\wamp64\Apache24\conf\httpd.conf)
    • Ouvrir le fichier dans notepad++ et transformer toute référence à C:/Apache24 en M:/webserver/wamp64/Apache24   ATTENTION dans le fichier de configuration d'Apache on utilise des slash et non pas des antislash !  (pour faire ceci le plus simple est d'utiliser l'outil find/replace de notepad++ : taper Ctrl-F pour ouvrir la boite de dialogue find/replace, choisir l'onglet "replace" et mettre C:/Apache24 dans le champ "Find what", mettre M:/webserver/wamp64/Apache24 dans le champ "Replace with", puis lancer l'opération avec le bouton "Replace All").
  2. D'autres configurations à faire pour bien préparer notre serveur Apache :
    • vers la ligne n° 58, changer Listen 80 en Listen *:80 (permet Apache de répondre sur le port 80 quelque soit l'adresse IP fournie)
    • vers la ligne n° 219, décommenter (c'est à dire enlever le dièse en début de ligne) la ligne qui spécifie le ServerName, et à la place de www.example.com:80  mettre localhost:80 (permet Apache de répondre à l'URL "localhost")
    • vers la ligne n° 155, décommenter la ligne LoadModule rewrite_module modules/mod_rewrite.so (pour activer le module pour la réécriture des URL - très utile dans un contexte CMS)
    • Dans la section <Directory "M:/webserver/wamp64/Apache24/htdocs">, vers la ligne n° 264, il faut spécifier AllowOverride All  au lieu de AllowOverride None  (permet l'utilisation des fichiers .htaccess pour configurer Apache en dehors du fichier config principal - également très utile dans un contexte CMS)
    • Enregistrer et fermer le fichier

 

ÉTAPE 8 : Lancer Apache et vérifier que ça fonctionne

  1. Lancez le serveur Apache pour la première fois :
    • double-clic le script demarrer_apache.bat qui devrait se trouver dans le dossier wamp64
    • remarque : si vous voyez un dialogue du pare-feu Windows, il faut débloquer / donner toutes les autorisations pour que le serveur Apache puisse tourner
    • dans la fenêtre de commande qui s'affiche (fenêtre noire style terminal), s'il y a des messages d'erreur il peut y avoir un problème au niveau de la configuration - dans ce cas regarder bien le détail des messages pour essayer de déboguer. Si on n'arrive pas il faut alerter l'enseignant.
  2. Tester la bonne fonctionnement du serveur en ouvrant la page http://localhost dans un navigateur - on devrait voir un message comme "It works!" qui indique que le serveur tourne correctement
  3. La racine web du serveur se trouve au M:\webserver\wamp64\Apache24\htdocs et le document qui affiche "It works! " est le document index.html  dans ce dossier (dans la configuration par défaut index.html  est le fichier servi quand l'internaute ne spécifie pas de nom de fichier)
  4. Comme exercice, et pour prouver que c'est bien le fichier dans le dossier htdocs qui est le fichier servi quand on tape localhost, personnaliser la page index.html qui s'y trouve (via notepad++) et rafraîchir la page dans le navigateur pour voir les modifications. Par exemple, au lieu d'afficher "It works ", faire en sorte qu'on affiche "Le serveur Apache fonctionne avec racine web = htdocs ".

 

INFO : Comment Arrêter et Redémarrer le serveur Apache

Remarque : En classe nous n'avons pas de droits administrateur sur les machines. Nous devons faire l'installation WAMP sans ces droits. Ceci implique que les softwares (Apache et MySQL) ne tournent pas en tant que service (processus de fond, démarré automatiquement par le système) mais en tant que logiciel normal qui doit être lancé/arrêté "manuellement".

  • Pour arrêter le serveur Apache : utiliser le script arreter_apache.bat
  • Pour démarrer le serveur Apache : utiliser le script demarrer_apache.bat
  • Pour voir le statut des serveurs (Apache et MySQL) : utiliser le script status.bat

 

ÉTAPE 9 : Reconfiguration de la racine web d'Apache (DocumentRoot )

  1. Explications : Pour l'instant la racine web du serveur (où Apache trouve les documents HTML, CSS etc) est le dossier wamp64/Apache24/htdocs. On peut remarquer que tout ce qu'on trouve sous wamp64, à part le contenu du dossier htdocs, appartient à la fonctionnalité et à la configuration du serveur web Apache - et ceci est étroitement lié au système Windows. Le contenu du dossier htdocs par contre est indépendant du système d'exploitation. On pourrait prendre le contenu du dossier htdocs et le mettre sur un serveur Linux par exemple sans besoin de le modifier. Il est logique donc de mettre le contenu de htdocs dans un dossier à part, et d'informer Apache où le chercher. Ainsi ce qui est lié au système Windows est dans un dossier (wamp64 ) et ce qui est indépendant du système d'exploitation est dans un autre (www ). Voilà pourquoi on avait créé le dossier www  au départ.
  2. Ouvrir le fichier de configuration Apache (httpd.conf) dans notepad++
  3. Changer les deux instances de M:/webserver/wamp64/Apache24/htdocs en M:/webserver/www  (ces deux instances correspondent à la configuration DocumentRoot et à la section Directory qui est associée). Enregistrer les modifications et fermer le fichier.
  4. Copier le fichier M:\webserver\wamp64\Apache24\htdocs\index.html vers M:\webserver\www et le modifier à nouveau (pour qu'on puisse vérifier que le serveur sert ce fichier et pas celui du dossier htdocs ) : faire en sorte qu'on affiche "Le serveur Apache fonctionne avec racine web = www ".
  5. Arrêter et redémarrer le serveur Apache pour mettre en effet les changements de configuration
  6. Ouvrir la page http://localhost dans un navigateur et rafraichir avec Ctrl-F5 pour s'assurer de ne pas voir la page en cache. Vérifier qu'on voit le contenu du fichier index.html du dossier www

 

SECTION C : INSTALLATION PHP

 

ÉTAPE 10 : Installation de PHP

  1. Créer un dossier nommé PHP56  (en majuscules !) dans le dossier wamp64  (le nouveau dossier aura le chemin M:/webserver/wamp64/PHP56 )
  2. Déplacer le fichier zip pour l'installation de PHP (c'est le fichier zip qui commence par php-5.6) du dossier wamp64  vers ce nouveau dossier PHP56.
  3. Extraire le contenu du fichier zip directement dans le dossier PHP56 (clic-droit sur le fichier zip et choisir "extraire ici").
  4. Supprimer le fichier zip pour l'installation de PHP (on n'en a plus besoin).

 

ÉTAPE 11 : Configuration de PHP

  1. Dans le dossier PHP56 créer une copie du fichier php.ini-development et l'appeler php.ini
  2. Ouvrir php.ini dans notepad++ et faire les changements suivants (ATTENTION dans ce fichier on utilise les antislash) ...
  3. Vers la ligne n° 725
    • trouver la ligne qui commence par
      • doc_root =
    • et la changer en
      • doc_root = M:\webserver\www
    • ce changement est pour mettre le moteur PHP au courant de l'emplacement de la racine web (DocumentRoot) d'Apache
  4. vers la ligne n° 736
    • décommenter (enlever point-virgule et espace en début de ligne) et transformer la définition du dossier des extensions - ainsi cette ligne
      • ; extension_dir = "ext"
    • devient
      • extension_dir = "M:\webserver\wamp64\PHP56\ext"
    • ce changement est pour informer le moteur PHP où trouver les extensions (modules complémentaires pour étendre la fonctionnalité du moteur PHP)
  5. vers la ligne n° 660
    • trouver le texte
      • post_max_size = 8M
    • et le transformer en
      • post_max_size = 40M
  6. vers la ligne n° 810
    • trouver le texte
      • upload_max_filesize = 2M
    • et le transformer en
      • upload_max_filesize = 40M
    • ces 2 changements sont pour permettre le transfert en upload (téléversement) de gros fichiers vers le moteur PHP - utile pour uploader des sauvegardes de base de données dans un contexte CMS/phpMyAdmin par exemple)
  7. vers la ligne n° 372
    • trouver le texte
      • max_execution_time = 30
    • et le transformer en
      • max_execution_time = 1200
    • ce changement est pour permettre le moteur PHP de prendre jusqu'à 20 minutes pour traiter une requête (utile dans le cas d'une initialization de base de données pour un système CMS - opération qui peut en effet durer quelques minutes)
  8. enregistrer et fermer le fichier php.ini

 

SECTION D : COUPLER APACHE ET PHP

 

ÉTAPE 12 : Reconfiguration d'Apache pour qu'il puisse exploiter le moteur PHP

  1. Jusqu'à là Apache ignore totalement l'existence du moteur PHP sur la machine. On doit le mettre au courant. Ouvrir le fichier configuration d'Apache (wamp64\Apache24\conf\httpd.conf) et, à la fin du fichier, ajouter ces 4 lignes :

    #PHP5 module
    LoadModule php5_module "M:/webserver/wamp64/PHP56/php5apache2_4.dll"
    AddType application/x-httpd-php .php
    PHPIniDir "M:/webserver/wamp64/PHP56"


  2. On doit reconfigurer quels fichiers peuvent être invoqués/servis par Apache quand l'internaute ne spécifie pas de fichier dans le URL (quand l'URL est simplement "localhost" par exemple - jusqu'à là il n'y avait que index.html qui serait servi). Toujours dans httpd.conf, vers la ligne n° 277, changer le texte DirectoryIndex index.html en DirectoryIndex index.php index.html - ainsi le fichier index.php est dans la liste et il est prioritaire.
  3. Enregistrer et fermer le fichier httpd.conf
  4. Arrêter et redémarrer Apache pour mettre les changements en effet. Si le serveur Apache ne se lance pas, ou si, dans la fenêtre de commande qui s'affiche (fenêtre noire style terminal), il y a des messages d'erreur il peut y avoir un problème au niveau de la configuration - dans ce cas regarder bien le détail des messages pour essayer de déboguer. Si on n'arrive pas il faut alerter l'enseignant.

 

ÉTAPE 13 : Tester l'exploitation de PHP par Apache

  • Avant de créer et tester un fichier PHP, ouvrir le navigateur sur http://localhost et vérifier que page qui correspond au fichier index.html s'affiche toujours. Remarquer que le serveur suit la configuration DirectoryIndex index.php index.html qui veut dire "s'il n'y a pas de fichier spécifié dans l'URL, essayer de trouver index.php et, si on ne le trouve pas, trouver index.html"
  • Créer un fichier PHP nommé index.php  dans le répertoire www  avec le contenu suivant et le tester en ouvrant le navigateur sur http://localhost
<html>
<body>
<h1>Le serveur Apache fonctionne avec racine web = www</h1>
<h1>PHP : Le code du lutin = <?php print rand(100000,999999); ?></h1>
</body>
</html>
  • Rafraichir la page plusieurs fois pour voir que la page est générée de façon dynamique (le contenu n'est pas toujours pareil)
  • Maintenant créer un deuxième fichier PHP nommé phpinfo.php également dans le dossier www  avec le contenu suivant. Ce fichier est utile (au moins pour l'enseignant) dans le cas où on doit déboguer des problèmes de configuration/exécution du système WAMP.
<html>
<body style="width:932px; margin:10px auto;">
<h3>Apache racine web (getenv DOCUMENT_ROOT)</h3>
<?php echo getenv("DOCUMENT_ROOT"); ?>
<h3>Chemin du fichier php.ini (php_ini_loaded_file)</h3>
<?php echo php_ini_loaded_file(); ?>
<h3>Extensions charg&eacute;es (get_loaded_extensions)</h3>
<?php print_r(get_loaded_extensions()); ?>
<h3>Version et configurations du moteur PHP (phpinfo)</h3>
<?php phpinfo(); ?>
</body>
</html>

 

SECTION E : INSTALLATION MYSQL

 

ÉTAPE 14 : Installation de MySQL

  1. Trouver le fichier zip pour l'installation de MySQL dans le dossier wamp64 (c'est le fichier zip qui commence par mysql)
  2. Extraire le contenu du fichier zip - vous aurez un nouveau dossier nommé mysql-5.6.28-winx64 ou similaire
  3. Renommer ce répertoire en MySQL56 (bien faire attention aux minuscules et majuscules !)
  4. A vérifier : le chemin du dossier MySQL56 est bien M:\webserver\wamp64\MySQL56
  5. Supprimer le fichier zip pour l'installation de MySQL (on n'en a plus besoin)

 

ÉTAPE 15 : Lancer le serveur MySQL

  1. Démarrer le serveur MySQL via le script demarrer_mysql.bat  qui se trouve dans le dossier wamp64
  2. dans la fenêtre de commande qui s'affiche (fenêtre noire style terminal) il peut y avoir un message d'avertissement comme "[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details)." - ce message n'est pas problématique et on peut l'ignorer.
  3. par contre si, dans la fenêtre de commande qui s'affiche, il y a des vrais messages d'erreur il peut y avoir un problème au niveau de la configuration - dans ce cas regarder bien le détail des messages pour essayer de déboguer. Si on n'arrive pas il faut alerter l'enseignant.
  4.  si on voit un dialogue du pare-feu Windows, il faut débloquer / donner toutes les autorisations pour que le serveur MySQL puisse tourner

 

ÉTAPE 16 : Tester le bon fonctionnement du serveur MySQL via un client MySQL

  • Pour interagir avec le serveur MySQL ouvrir l'explorateur Windows et changer de dossier vers M:\webserver\wamp64\MySQL56\bin
  • double-clic le fichier mysql.exe (ceci est un logiciel client qui peut interroger le servuer MySQL)
  • Une fenêtre de commande s'affiche avec quelques informations (voir la capture ci-dessous)
  • à l'invite de commande faire l'opération suivante (taper cette commande) :
    • select count(*) from information_schema.tables;
  • On devrait voir le suivant dans là fenêtre de commande
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.28 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select count(*) from information_schema.tables;
+----------+
| count(*) |
+----------+
|       59 |
+----------+
1 row in set (0.01 sec)

mysql> 

  • Vérifier que la commande a bien fonctionnée (qu'elle a donné le résultat comme dans la capture) - un bon résultat ici prouve que le serveur répond correctement au client. Ainsi c'est une validation de la bonne installation et configuration du serveur MySQL.
  • A l'invite de commande, taper le mot quit
  • La fenêtre de commande devrait disparaître (le client MySQL ne tourne plus)
  • Arrêter maintenant le serveur MySQL via le script arreter_mysql.bat  qui se trouve dans le dossier wamp64

 

INFO : Comment Arrêter et Redémarrer le serveur MySQL

  • Pour arrêter le serveur MySQL : utiliser le script arreter_mysql.bat
  • Pour démarrer le serveur MySQL : utiliser le script demarrer_mysql.bat
  • Pour voir le statut des serveurs (Apache et MySQL) : utiliser le script status.bat

 

INFO : Comment Arrêter et Redémarrer les 2 serveurs Apache et MySQL ensemble

  • Pour arrêter tout (Apache et MySQL) : utiliser le script arreter_wamp.bat
  • Pour démarrer tout (Apache et MySQL) : utiliser le script demarrer_wamp.bat
  • Pour voir le statut des serveurs (Apache et MySQL) : utiliser le script status.bat

 

SECTION F : COUPLER PHP ET MYSQL

 

ÉTAPE 17 : Configurer PHP pour pouvoir exploiter la base MySQL

  1. On doit activer les extensions PHP nécessaires pour exploiter une base MySQL depuis le code PHP. Pour faire ceci, ouvrir php.ini (on le trouve dans le dossier wamp64\PHP56) et faire les opérations/vérifications suivantes :
    • vers ligne n° 736, vérifier que cette ligne existe et qu'elle n'est pas comméntée (qu'il n'y a pas de point-virgule en début de ligne) :
      • extension_dir = "M:\webserver\wamp64\PHP56\ext"
    • maintenant, vers ligne n° 890, décommenter ces 2 lignes (enlever le point-virgule en début de ligne) ainsi ceci  :
      • ;extension=php_mysql.dll
      • ;extension=php_mysqli.dll
    • devient ceci
      • extension=php_mysql.dll
      • extension=php_mysqli.dll
  2. Arrêter et redémarrer tout les serveurs via les scripts arreter_wamp.bat  et demarrer_wamp.bat  pour mettre ces changements en effet et pour être sûr que tout tourne en préparation pour la prochaine étape

 

SECTION G : TESTER L’INTERACTIVITÉ APACHE <=> PHP <=> MYSQL

 

ÉTAPE 18 : Tester l'interaction entre Apache, PHP et Mysql (tester le WAMP Stack)

  • Vérifier que Apache et MySQL tourne via le script status.bat 
  • Créer un nouveau script PHP nommé wamptest.php dans le répertoire www  et mettre le contenu ci-dessous. Enregistrer et fermer le fichier.
  • Tester ce nouveau script en ouvrant le navigateur sur http://localhost/wamptest.php
<html>
<body style="width:932px; margin:10px auto;">

<?php
date_default_timezone_set("Europe/Paris");
echo '<h3>Test Apache-PHP-MySQL | '. date('D, d M Y H:i:s') . ' | Docroot ' . getenv("DOCUMENT_ROOT") . '</h3>';
$link=mysqli_connect("localhost", "root", "", "information_schema") or die;
echo "<span style=\"color:green;\">Connect&eacute; au serveur MySQL Server sur localhost, database=information_schema</span><br>";
echo "Si on voit un tableau avec une dizaine de lignes ci-dessous tout va bien...<br><br>";
$query="SELECT * from information_schema.engines" or die;
$result = $link->query($query);
echo '<table border="1" cellpadding="5">';
while($row = mysqli_fetch_array($result))
{
  echo '<tr>';
  $first = true;
  foreach($row as $value)
  {
    echo "<td>".$value."</td>";
  }
  echo '</tr>';
}
echo '</table>';
?>

</body>
</html>
  •  Si, dans la page qui s'affiche, on voit un tableau avec une dizaine de lignes : félicitations, tout va bien, l'installation WAMP est complète.

 


EXERCICES

Pour compléter ces exercices il faut que le système WAMP soit correctement installé et qu'au moins le serveur Apache soit lancé.

1. Créer un sous-dossier du dossier www  nommé helloworld . Dans ce nouveau dossier, créer une page web dans un fichier nommé helloworld.html . Le code de cette page est fourni ci-dessous. Ouvrir la page via un appel http à localhost/helloworld/helloworld.html  et noter l'affichage de la page.

<html>
<body>
<h3>Hello world</h3>
</body>
</html>

2. Toujours dans le dossier www/helloworld, créer une copie du fichier helloworld.html  et l'appeler helloworld.php . Ouvrir la page via un appel http à localhost/helloworld/helloworld.php . Est-ce qu'elle s'affiche comme la page helloworld.html ? Comment expliquer ce résultat ?

3. Toujours dans le dossier www/helloworld , créer un nouveau fichier nommé helloworld2.php. Le code de helloworld2.php  sera pareil que helloworld.php  sauf que chaque ligne sera imprimée dans la page via un appel à la fonction print  de PHP. Le code pour helloworld2.php est fourni ci-dessous. Ouvrir la page via un appel http à localhost/helloworld/helloworld2.php . Est-ce qu'elle s'affiche comme helloworld.html  et comme helloworld.php  ? Que peut-on dire sur les différences (conceptuelles, techniques, etc) entre les 3 versions de cette page web ?

<?php print('<html>'); ?>
<?php print('<body>'); ?>
<?php print('<h3>Hello world</h3>'); ?>
<?php print('</body>'); ?>
<?php print('</html>'); ?>