Pendant tout le TP, remplacez VMID par le numéro de votre machine virtuelle.
• mmis2.domVMID.net
• tp03.domVMID.net
Avant de continuer , vérifiez que les deux sites fonctionnent à partir de votre navigateur.
Dans le cas contraire, essayez de corriger le problème avant de continuer.
(Une correction des exos du tp03 est à la fin de ce document).
ServerName tp04.domVMID.net
DocumentRoot /var/www/tp04
DirectoryIndex index.php
<?php
echo "Adresse IP du Serveur : ".$_SERVER['SERVER_ADDR']."<br />";
echo "Adresse IP du Poste : ".$_SERVER['REMOTE_ADDR'];
?>
a) Vérifiez le contenu de votre fichier 004-tp04.conf, vous devez y trouver les 3 lignes
suivantes (sans # devant )
ServerName tp04.domVMID.net
DocumentRoot /var/www/tp04
DirectoryIndex index.php
a) Vérifiez que vous avez bien installé php7.0 et le module apache lors
des TP précédents :
apt-get update
apt-get install php7.0
apt-get install libapache2-mod-php7.0
c) Vérifiez que le module php7.0 est bien actif dans apache2 : a2enmod php7.0
php se présente comme un module d'Apache et son fonctionnement est contrôlé par deux
fichiers de configuration :
• /etc/apache2/mods-available/php7.0.conf
Ce fichier permet de régler l'activation de l'interpréteur php dans certains modules
d'Apache comme par exemple userdir que vous avez utilisé lors du premier TP.
En effet l'utilisation de php dans les dossiers personnels (public_html) est
désactivée par défaut.
• /etc/php/7.0/apache2/php.ini
Ce fichier contient toutes les directives de configuration de php.
Quelques exemples de directives couramment utilisées :
Partie 2b : phpinfo()
Pour visualiser l'état de ces paramètres, php dispose d'une fonction : phpinfo()
Pour voir le résultat de cette fonction, créez une page info.php dans le dossier tp04
et appelez simplement la fonction sans aucun argument : phpinfo();
(mais entre les deux balises php !!!)
OPTIONS VALEURS
Version de PHP
Emplacement du fichier php.ini
display_errors
file_uploads
upload_max_filesize
max_file_upload
post_max_size
max_execution_time
SMTP
APACHE_RUN_USER
La page phpinfo vous indique aussi les variables de SESSIONS actives (Section PHP
Variables), ainsi que les différents paramètres des librairies PHP spécialisées comme par
exemple : calendar, ftp, hash, mcrypt, mysql etc ...).
Un simple affichage de cette page permet donc de savoir quelles sont les fonctions
utilisables sur votre installation de PHP et comment les paramètres de chacune d'entre-
elles sont initialisés.
Partie 2c : display_errors
Pour illustrer l'intérêt de connaitre et de modifier les options de PHP commençons par
celle qui à sauver plus d'un développeur : display_errors. Pour bien comprendre son
usage commencez par créer une page test.php avec le contenu suivant (sans corrigez les
erreurs de code ) :
<?php
toto=1
echo "Ceci est une page pleine d'erreurs"
echo toto$;
?>
Bien entendu, il vous reste encore à interpréter correctement le message pour corriger les
erreurs, mais admettez tout de même que c'est plus simple que de chercher directement
les erreurs dans le code (surtout quand il y a quelques centaines de lignes).
Génial, me direz-vous mais comment faire si on n'a pas accès au fichier php.ini ?
Encore une fois, c'est le fichier htaccess qui vous sauvera (à condition que la gestion d'un tel
fichier soit activée sur le serveur comme nous l'avons vu dans le TP précédent)
Il suffit d'ajouter la ligne : php_flag display_errors On
dans le fichier htaccess de la racine de votre site.
PETITE DEMONSTRATION :
<!DOCTYPE html>
<html>
<head>
<title>FORMULAIRE UPLOAD</title>
<meta charset="utf-8" />
</head>
<body>
<h1>FORMULAIRE DE TELECHARGEMENT TP04</h1>
<form method="POST" action="upload.php" enctype="multipart/form-data">
<p>
<input type="file" name="fichier" /><br />
<input type="submit" value="ENVOYER" />
</p>
</form>
</body>
</html>
<?php
move_uploaded_file($_FILES['fichier']['tmp_name'],'uploads/'.basename($_FILES['fichier']['name']));
if ($_FILES['fichier']['error'] == 0) {
echo "Votre fichier est dans /var/www/tp04/uploads";
} else {
echo "UPLOAD ERROR";
}
?>
Essayez maintenant d'uploader le fichier PHOTO.jpg qui se trouve sur votre poste dans
(Répertoire Personnel/Documents). Là , ça ne fonctionne plus. Le fichier est supérieur à
2Mo, le système refuse de le télécharger.
file_upload peut être passé à Off pour interdire tout téléchargement vers le serveur.
max_file_uploads permet de gérer le nombre de fichiers téléchargeables en une seule fois.
post_max_size définit la taille maximale des données reçues par la méthode POST.
Cette option affecte également les fichiers chargés. Pour charger de gros fichiers, cette
valeur doit être plus grande que la valeur de upload_max_filesize .
Et dans le fichier htaccess ? Pas de souci, ces valeurs peuvent aussi être géré dans le
fichier htaccess avec la Directive php_value. Exemples :
php_value upload_max_filesize 4M aurait le même effet que notre modification
php_flag file_upload Off interdirait le téléchargement des fichiers.
Par défaut ce script permet de calculer une suite de Fibonacci à un rang donné , mais il
n'arrive jamais à s'exécuter complètement car la complexité du calcul génère un nombre
trop important d'appels récursifs à la fonction initiale.
Le code à exécuter est le suivant, saisissez le dans une page nommée fibo.php
et exécutez-le en appelant la page avec l'url : tp04.domVMID.net/fibo.php
<?php
function fibo( $n ) {
if ($n==0) {
return 0;
} else if ($n==1) {
return 1;
} else {
return (fibo($n-1)+fibo($n-2));
}
}
$tab=array(1,3,10,30,40,42,44);
30 seconds étant le temps maximum d'exécution accordé à un traitement php. Ce temps est défini
par l'option : max_execution_time et peut bien sûr être augmenté en modifiant sa valeur dans le
fichier php.ini ou dans le htaccess .
Votre dernier exercice va donc consister à faire exécuter le code de la page suivante dans sa totalité
sans changer ni le code, ni le fichier php.ini .
Pour faire exécuter le code, vous devez appeler la page par l'adresse :
INDICE : Vous devez réutiliser des concepts vus dans les parties précédentes, mais aussi dans le
TP précédent.
mkdir /var/www/tp03
nano /var/www/tp03/tp03.html (Contenu de votre choix)
nano /var/www/tp03/error404.php (Pour la page d'erreur 404)
cd /etc/apache2/sites-available
cp 000-default.conf 003-tp03.conf
nano 003-tp03.conf avec les directives suivantes :
ServerName tp03.domVMID.net
DocumentRoot /var/www/tp03
DirectoryIndex tp03.html
<Directory /var/www/tp03>
Options -Indexes (Pas d'affichage de la liste des fichiers)
ErrorDocument 404 /error404.php (Gestion de l'erreur 404)
</Directory>
a2ensite 003-tp03.conf
systemctl reload apache2