PHP

PHP lui-même est seulement un langage de programmation adapté au développement web côté serveur. Pour que les utilisateurs aient accès à nos applications il est nécessaire d’installer un serveur web capable de s’interfacer avec PHP.

Pour apprendre une bonne partie de la syntaxe et des fonctionnalités du langage : PHP Introduction - GeeksforGeeks

Dans notre cas, on utilisera Apache, voilà la commande nécessaire pour tout installer sur un serveur basé sur Debian/Ubuntu :

$ sudo apt install php-common libapache2-mod-php php-cli

Voici quelques frameworks qui facilitent la création de sites webs :

Une fois installé, il est important de savoir comment configurer PHP et surtout dans quel ordre PHP charge les fichiers php.ini :

  1. Celui du SAPI (Server API)
    • /etc/php/<version>/apache2/php.ini pour Apache ;
    • /etc/php/<version>/fpm/php.ini pour PHP FPM ;
    • /etc/php/<version>/cli/php.ini pour PHP CLI.
  2. Celui spécifié par la variable PHPRC si cette-dernière existe ;
  3. Celui à la racine de chaque serveur web (à configurer, différent selon le SAPI utilisé).

Pour être sûr du chemin, il y a deux vérifications à faire :

Les paramètres suivants peuvent être modifiés pour gagner en performances :

Nom du paramètreDescription
auto_globals_jitCréer les variables globales quand elles sont utilisées pour la première fois ou non.
child_terminateAutoriser les scripts PHP à terminer le processus qui traite la requête en cours une fois cette-dernière terminée.
implicit_flushForcer ou non PHP à vider sa sortie à chaque echo/print et à chaque bloc HTML.
output_bufferingActiver ou non la mise en mémoire de la sortie, évite d’envoyer les données en plusieurs fois.
realpath_cache_sizeLa taille de la mémoire allouée pour mettre en cache les chemins réels des fichiers.
realpath_cache_ttlLa durée maximale de la mise en cache de ces chemins.
session.gc_maxlifetimeLa durée (en secondes) avec qu’une donnée soit considérée comme inutile (puis libérée).
max_execution_timeLe temps (en secondes) maximum avant d’arrêter l’exécution d’un script.
enable_post_data_readingPopuler automatiquement ou non les variables $POST et $INPUT.

Pour ce qui est de la sécurité :

Nom du paramètreDescription
display_errors et display_startup_errorAfficher ou non les erreurs PHP côté front, peut inclure des informations sensibles.
doc_rootLa racine de PHP, presque tous les documents sous la racine seront accessibles.
engineÀ configurer au niveau d’un sous-dossier, permet d’activer ou non le parsing de fichiers PHP.
expose_phpAfficher ou non la version de PHP dans les headers HTTP.
file_uploadsActivé par défaut, autorise ou non le téléversement de fichiers.
memory_limitLa quantité maximale de mémoire qu’un script peut allouer, évite qu’un script ne prenne 100% de la mémoire disponible.
mysql.allow_local_infile Activé par défaut, autorise ou non les directives LOAD_DATA.

Quelques options pour faciliter le debug :

Nom du paramètreDescription
error_prepend_string et error_append_stringLes chaînes à ajouter avant et après chaque erreur.
error_logLe nom du fichier où écrire toutes les erreurs (stderr par défaut).
mysql.trace_modeDésactivé par défaut, affiche les erreurs et warnings SQL.