SPARQL Protocol and RDF Query Language/Travail pratique/Initiation à PHP
Pourquoi utiliser PHP ?
[modifier | modifier le wikicode]Dans le chapitre précédent, vous avez configuré votre serveur HTTP et créé une petite page HTML. Vous allez maintenant essayer de la rendre dynamique en y insérant du PHP pour afficher le contenu d'une base de données MySQL ou SPARQL par exemple. Pour cela, il faudra installer PHP, MySQL... et un triplestore !
Mais commençons par le début : il vous faut savoir utiliser PHP.
À savoir avant de commencer
[modifier | modifier le wikicode]Que fait PHP ?
[modifier | modifier le wikicode]- HTML avec CSS sont des langages pour afficher des pages Web statiques, c'est-à-dire des pages qui ne changent pas dans le temps.
- PHP est un langage de programmation Web car il produit généralement du code HTML.
- Le code HTML que produit PHP change en fonction des circonstances que vous avez programmées.
Donc PHP permet de faire des pages Web dynamiques.
Quand PHP intervient-il ?
[modifier | modifier le wikicode]Il intervient à chaque chargement (et donc rafraîchissement) d'une page Web écrite en PHP.
Un rafraîchissement de page, c’est par exemple :
- le clic de l’utilisateur sur le bouton Envoyer d'un formulaire (voir la leçon formulaire en HTML)
- une première arrivée sur une page Web.
Documentations
[modifier | modifier le wikicode]Le cours PHP
[modifier | modifier le wikicode]Les cours sur PHP dans Wikiversité sont déjà bien avancés, lisez-les si vous en avez le temps. Les TP ne feront que survoler les concepts de base.
Le site officiel de PHP
[modifier | modifier le wikicode]Le site officiel de PHP est extrêmement bien fait. La documentation de n’importe quelle fonction est accessible depuis l'URL : http://php.net
N'oubliez pas de consulter les commentaires utilisateurs, car de très nombreux commentaires donnent des conseils très utiles. La documentation complète de PHP est disponible en français à l’adresse : http://www.php.net/manual/fr/
Installation de PHP
[modifier | modifier le wikicode]Nous installons les paquets PHP ainsi que le paquet qui peut nous permettre de lancer des scripts PHP via une ligne de commande.
Sous Ubuntu
sudo apt-get install php5 php5-cli
Sous Fedora ou CentOS
yum install php php-cli
PHP via ligne de commande
[modifier | modifier le wikicode]Il est souvent indispensable de savoir faire des scripts automatiques au sein d'un serveur Linux.
Il existe des tas de langages pour le faire. Si vous souhaitez apprendre à utiliser PHP, autant savoir l’utiliser aussi pour l'écriture de scripts.
Afficher Hello World
[modifier | modifier le wikicode]Comme toutes commandes sous Linux, PHP possède sa documentation à travers la commande man :
Sous Ubuntu & Fedora ou CentOS
man php
Pour quitter le mode man, tapez sur la lettre q du clavier.
Question : À l'aide de la documentation PHP, trouvez la commande pour afficher "Hello World" ?
php -r 'echo "Hello World\n";'
Configurer PHP
[modifier | modifier le wikicode]À de nombreuses reprises, vous aurez à configurer PHP, pour :
- modifier la taille maximale d'un fichier téléchargé via un formulaire
- changer la configuration du débogueur (qu'on verra dans un autre TP)
- configurer le fuseau horaire pour éviter de le faire dans le code
- indiquer l'adresse mail de l'administrateur pour recevoir les alertes
- etc.
Faire du développement en PHP, c’est aussi savoir faire un minimum d'administration du serveur.
Dans la réalité, vous n'aurez que rarement une console Windows vers votre serveur. La plupart du temps, vous aurez une console ssh, c'est-à-dire que vous n'aurez rien d’autre qu'une ligne de commande pour configurer le serveur.
Pour ce TP, bien que nous pourrions utiliser gedit sous Ubuntu, nous allons utiliser la commande vim pour nous entraîner à utiliser le mode console uniquement.
Savoir utiliser VIM
[modifier | modifier le wikicode]On va donc commencer par installer vim : Sous Ubuntu
sudo apt-get install vim
Sous Fedora ou CentOS
yum install vim
Il faut savoir que VIM, à tout moment, possède un mode :
- standby : il attend une commande
- insert : il insère ce que vous tapez au clavier à l'endroit du curseur
- replace : il remplace le caractère devant le curseur avec ce que vous tapez au clavier
On peut voir en bas de l'écran le mode dans lequel vim se trouve :
- rien n’est affiché en bas de l'écran, à part la position du curseur : mode standby
- -- INSERT -- : mode insert
- -- REPLACE -- : mode replace
Pour revenir au mode standby, pressez la touche Esc (en haut à gauche du clavier, ou touche échap.).
Pour passer au mode insert, il faut presser la touche Inser (à côté du bouton retour arrière, ou delete).
Pour passer au mode replace, tapez deux fois sur la touche Inser.
Pour quitter vim, il faut être en mode standby et taper : et q
Avant de quitter, vim vous indique si vous avez modifié le fichier et vous demande de préciser si vous voulez sauver ou non vos modifications :
- En mode standby, pour quitter sans sauver => :q!
- En mode standby, pour quitter et sauver => :x
Dernière commande pratique à connaître, la recherche d'une ligne :
- En mode standby, pour chercher un texte => /timezone
- En mode standby, pour chercher l’occurrence suivante => n
Voilà le minimum à savoir sur vim pour survivre en mode console pour ce TP. (pour plus de commandes)
Exercice : Dessiner un bateau avec vim dans le fichier testvim. Ouvrir ce fichier comme indiqué ci-dessous (le tilde ~ est un raccourci pour indiquer la racine de votre répertoire personnel).
vim ~/testvim
(~~~) ^ ^ |\ ^ | \ | \ | @ \ |----- ______|_______ \____________/
Exemple : configuration du fuseau horaire
[modifier | modifier le wikicode]Pour afficher le contenu d'une variable sous PHP, vous pouvez utiliser la fonction print_r.
Nous allons afficher le contenu de l’objet DateTime avec la ligne suivante :
php -r 'print_r(new DateTime());'
Qui affiche :
DateTime Object ( [date] => 2011-08-04 14:28:40 [timezone_type] => 3 [timezone] => Europe/Berlin )
Vous pouvez remarquer que le fuseau horaire n’est pas correct.
Nous pouvons également vérifier la configuration du fuseau horaire à travers la commande suivante, qui cherche le paramètre timezone à travers la sortie de la fonction phpinfo().
php -r 'phpinfo();' | grep -e "timezone"
Nous allons changer ce paramètre dans le fichier de configuration de PHP.
Pour trouver où se trouve le fichier php.ini :
php --ini
Avec vim, ouvrir le fichier php.ini et remplacer dans ce fichier la ligne :
;date.timezone =
par la ligne (attention bien retirer le ; du début de ligne pour que ce ne soit plus un commentaire)
date.timezone = "Europe/Paris"
Retaper ensuite cette commande pour vérifier que la modification a été prise en compte :
php -r 'phpinfo();' | grep -e "timezone"
Mon premier script
[modifier | modifier le wikicode]La ligne de commande permet de faire quelques commandes, mais le plus efficace est d'écrire un fichier avec les commandes à exécuter.
Un script PHP doit au moins contenir le texte suivant :
#!/bin/php
<?php
// your script
?>
Exercice : Écrire un script pour afficher "Hello World".
Ouvrir le fichier :
vim ~/hello.php
Écrire:
#!/bin/php
<?php
// your script
echo "Hello World\n";
?>
Exécuter le script :
php ~/hello.php
PHP via un site Web
[modifier | modifier le wikicode]Un site Web est un service qui envoie à un navigateur Web (ou browser) des fichiers HTML.
Une page Web dynamique en PHP va donc, à l'aide de PHP, construire un fichier HTML.
Nous allons donc utiliser comme base de nos pages PHP ce modèle de page :
<!DOCTYPE HTML>
<html>
<head>
<title>Titre de la page</title>
</head>
<body>
<!--Ceci est un commentaire pour html-->
Écrire ici le contenu de la page HTML
</body>
</html>
Ma première page Web
[modifier | modifier le wikicode]Dans le TP précédent, nous avons créé un site Web "http://moncv" qui est prêt à recevoir nos pages HTML. Le répertoire de destination de nos fichiers est : /var/www/moncv/
Exercice : Remplacer, modifier ou créer le fichier index.html pour écrire "Salut tout le monde !" (utiliser le modèle HTML vu plus haut).
Ouvrir le fichier (vim ouvre le fichier s’il existe déjà, ou le crée) :
vim /var/www/moncv/index.html
Recopier le fichier :
<!DOCTYPE HTML>
<html>
<head>
<title>Test</title>
</head>
<body>
Salut tout le monde !
</body>
</html>
Tester avec un navigateur.Attention, il faut peut-être rafraîchir la page.
firefox http://moncv
Exercice : « pour le fun » si vous avez le temps : afficher le dessin suivant dans votre fichier HTML en lisant la documentation du W3C.
indice : c’est sur cette page)
(~~~) ^ ^ |\ ^ | \ | \ | @ \ |----- ______|_______ \____________/
Ouvrir le fichier (vim ouvre le fichier s’il existe déjà, ou le crée) :
vim /var/www/moncv/index.html
Recopier le fichier :
<!DOCTYPE HTML>
<html>
<head>
<title>Test</title>
</head>
<body>
Salut tout le monde !<br />
<pre>(~~~) ^ ^
|\ ^
| \
| \
| @ \
|-----
______|_______
\____________/</pre>
</body>
</html>
Tester avec un navigateur. Attention, il faut peut-être rafraîchir la page.
firefox http://moncv
Ma première page dynamique
[modifier | modifier le wikicode]Nous allons maintenant, comme exemple, utiliser notre modèle HTML et y insérer le code PHP echo "Hello World\n";.
<!DOCTYPE HTML>
<html>
<head>
<title>Titre de la page</title>
</head>
<body>
<?php
//ceci est un commentaire php qui ne sera pas visible dans le code HTML
echo "Hello World\n";
?>
</body>
</html>
Nous créons non pas un fichier avec une extension .html, mais .php pour bien indiquer au serveur que le fichier doit être généré par PHP avant d'envoyer le fichier HTML.
vim /var/www/moncv/index.php
On supprime le fichier index.html pour qu'index.php soit le fichier par défaut du site.
rm /var/www/moncv/index.html
Vérifier le résultat avec votre navigateur :
firefox http://moncv
Votre première page dynamique est en ligne !
Afficher la configuration du serveur PHP
[modifier | modifier le wikicode]PHP offre aussi la possibilité d'afficher les informations de configuration à travers une page Web. C'est indispensable avec les hébergeurs qui n'offrent qu'un accès FTP à un site Web.
Exercice : créer une page info.php sur le serveur et qui ne contiendra que :
<?php phpinfo(); ?>
Vous devez retrouver le paramètre du créneau horaire que nous avons modifié plus haut.
Ces deux écritures sont équivalentes :
<?php phpinfo(); ?>
<?php
phpinfo();
L'élément fermant n’est pas nécessaire s'il n'y a que du code PHP dans le fichier.
En production, il ne faut pas laisser ce fichier info.php avec cette fonction phpinfo(), car il contient le paramétrage du serveur et peut donc indiquer les failles de sécurité du service (version des logiciels, etc.).
Nous n'irons pas plus loin dans ce TP, car nous reviendrons sur PHP dans les prochains TPs avec SPARQL.
Exercice avec Docker
[modifier | modifier le wikicode]- Reprendre l'image Docker de l'exercice précédent et y rajouter PHP7 comme dans ce TP.