Tester un environnement LAPP sur son ordinateur personnel
Pré-requis
La réalisation de cet exercice nécessite un ordinateur sous Linux avec un accès root et un serveur PostgreSQL installé. Les commandes sont spécifiées pour une distribution Ubuntu.
Rappels Postgres
Serveur web
L'objectif de cette partie est d'avoir un serveur web capable de distribuer des page HTML.
Installez le serveur web Apache.
sudo apt-get install apache2
Tester l'accès au serveur Web en entrant l'adresse web dans un navigateur : http://localhost
Question
L'installation par défaut du serveur web permet de servir les fichiers situés dans le dossier /var/www/html
.
Déposez un fichier HTML de votre choix dans ce dossier et accédez-y via votre navigateur Web.
Indice
Si votre fichier s'appelle example.html
et qu'il se trouve à la racine du serveur web /var/www/html
vous y accéderez par l'adresse http://localhost/example.html.
PHP
L'objectif de cette partie est d'avoir un interpréteur PHP en mode développement, c'est à dire qui affiche les erreurs quand il y en a.
Installez l'interpréteur PHP pour Apache.
sudo apt-get install php
Question
Créez le fichier example.php
ci-après et déposez-le sur votre serveur web. Faites un test d'accès.
<?php
echo "Hello world";
?>
Question
Créez et testez le fichier test.php
ci-après. Ce fichier permet de visualiser la configuration PHP du serveur.
<?php
phpinfo();
?>
Question
Par défaut l'installation d'un interpréteur PHP est en mode production et il n'affiche pas les erreurs. Il faut donc changer la configuration pour passer en mode développement.
À l'aide du fichier
test.php
précédent trouvez l'endroit où est stocké sur votre ordinateur le fichier de configurationphp.ini
.Par exemple :
/etc/php/7.0/apache2/php.ini
Éditez ce fichier en tant que root:
sudo nano php.ini
Remplacez le paramètre
display_errors = Off
pardisplay_errors = On
Relancez le serveur web :
sudo service apache2 reload
Question
Il est également nécessaire d'installer un complément à PHP pour qu'il se connecte à PostgreSQL.
sudo apt-get install php-pgsql
sudo service apache2 reload
PostgreSQL
L'objectif de cette partie est d'avoir une base PostgreSQL prête à être utilisée par un programme PHP.
Question
Connectez vous en tant qu'utilisateur postgres (su postgres
).
Créez un utilisateur test
et une base test
. Connectez-vous à la base.
psql -c "CREATE USER test WITH ENCRYPTED PASSWORD 'test'";
psql -c "CREATE DATABASE test WITH OWNER test";
psql --host=localhost --dbname=test --username=test
Créez une table medicament
et instanciez-la.
CREATE TABLE medicament (
nom varchar,
description varchar,
conditionnement integer,
PRIMARY KEY (nom)
);
INSERT INTO medicament (nom,description,conditionnement)
VALUES ('Chourix','Médicament contre la chute des choux',13);
INSERT INTO medicament (nom,description,conditionnement)
VALUES ('Tropas','Médicament contre les dysfonctionnements intellectuels',42);
L'objectif de cette partie est d'exécuter un programme PHP capable de lire le contenu de la table medicament
de notre base de données test
.
Question
Créez le fichier select.php
suivant (avec l'éditeur gedit
par exemple) et déposez-le sur votre serveur web. Accédez-y avec un client web pour exécuter le programme.
<?php
/** Connexion **/
$connexion = new PDO('pgsql:host=localhost;port=5432;dbname=test', 'test', 'test');
/** Préparation et exécution de la requête **/
$sql = "SELECT nom FROM medicament;";
$resultset = $connexion->prepare($sql);
$resultset->execute();
/** Traitement du résultat **/
while ($row = $resultset->fetch(PDO::FETCH_ASSOC)) {
echo $row['nom'];
echo " ";
}
/** Déconnexion **/
$connexion=null;
?>
L'objectif de cette partie est d'exécuter un programme PHP capable de modifier le contenu de la table medicament
de notre base de données test
.
Question
Créez le fichier insert.php
et testez-le (exécutez-le au moins deux fois).
<?php
/** Connexion **/
$connexion = new PDO('pgsql:host=localhost;port=5432;dbname=test', 'test', 'test');
/** Préparation et exécution de la requête **/
$sql = "INSERT INTO medicament (nom) VALUES ('Nouveau')";
$result = $connexion->prepare($sql);
$result->execute();
/** Traitement du résultat **/
if ($result) {
echo "'Nouveau' inséré";
}
else {
echo "Erreur lors de l'insertion";
}
/** Déconnexion **/
$connexion=null;
?>
Question
Vérifiez que l'insertion a fonctionné en appelant select.php
.