PHP
Présentation
PHP signifie : Hypertext Preprocessor (c'est un backronym...).
PHP est un langage de programmation libre, principalement utilisé pour produire des pages web dynamiques via un serveur web. Il peut également fonctionner en local. C'est un langage impératif orienté objet.
Il a été créé en 1994 par Rasmus Lerdorf pour son site web, c'était à la base une bibliothèque logicielle en C. Il as peaufiné son code au fil du temps et l'as rendu public en 1995. PHP s'appellait alors PHP/FI (Personnal Home Page /Form Interpreter). Deux étudiants ont redéveloppé le coeur de PHP trois ans plus tard jusqu'à PHP3, qui est alors devenu Hypertext Preprocessor. Ils ont ensuite commencé la création du moteur Zend, qui sera le coeur de PHP4.
PHP est le langage de programmation web côté serveur le plus utilisé.
Le code PHP est interprété par le serveur, qui génère à partir de celui-ci du code (html, css, wml, pdf, etc). Souvent couplé avec Apache, il permet la création d'application web dynamiques, en récupérant des informations depuis une BDD, une arborescence de fichiers, des inputs... Il est mutli-plateforme, et son utilisation commence par le traitement des formulaires, puis par l'accès aux bases de données. Il premet la la résolution aisée de problèmes complexes, ce qui en fait un incontournable.
Fonctionnement
PHP est un descendant du C. Il ressemble aussi à Java et Perl. Dans une exécution sur du web, cela se passe ainsi:
- Le visiteur demande une page web
- Le navigateur envoie une requête HTTP au serveur web
- La page contient du PHP : le serveur appelle l'interprète PHP.
- Cela génère le code final de la page.
- L'interprète PHP renvoie le code final au serveur web
- La page est envoyée au client
Une étape supplémentaire est souvent ajoutée : le dialogue entre PHP et la base de données. Classiquement, PHP ouvre une connexion avec le SGBD demandé, envoie des requêtes et récupère des résultats et ferme la connexion.
Un fichier php contient toujours:
- Une balise ouvrante <?php, qui indique que l'on est en train de faire du php à Apache
- du code php (...)
- La balise fermante : ?>
- Les commandes php se terminent par un ;
Configuration de PHP
Pour un serveur Apache, cette configuration se trouve dans /etc/php7.2/apache2/php.ini
La configuration du module php pour Apache est dans /etc/apache2/mods-available/php7.2.conf.
Pour le PHP lancé en ligne de commandes, le fichier est /etc/php7.2/cli/php.ini
Ce fichier est essentiellement modifié en production pour ne pas afficher les erreurs rencontrées pendant l'exécution de PHP : cela pourrait révéler des informations de configuration essentielles. C'est pourquoi il faut paramétrer la directive display_errors à on dans un environnement de dev, et à off dans un environnement de production. Il faut ensuite relancer le serveur Apache2.
Ensuite, toujours pour Apache2, le plus simple est d'activer le module php:
sudo a2enmod php7.2
Attention : pour être interprété avec cette configuration, un fichier html contenant du php doit porter l'extension .php. Cela est dû à cette configuration par défaut dans la conf du module php: <source> <FilesMatch ".+\.ph(ar|p|tml)$">
SetHandler application/x-httpd-php
</FilesMatch> </source>
Pour de la production, il est existe php-fpm qui est plus efficace.
Les logs
Les logs sont écrits dans le fichiers de logs du vhost, et c'est donc au fichier du vhost qu'il faut se référer.
opcache
Il est possible d'activer opcache pour gagner en vitesse d'exécution. OPcache précalcule le rendu des scripts php pour ne pas avoir à l'exécuter à chaque chargement de page.
Pour cela, il faut éditer le fichier /etc/php/7.3/apache2/php.ini et d'y recopier la configuration suivante:
<source> opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1 </source>