Table des matières

PHP : un langage de programmation libre

Pour le Raspberry Pi, tout faire en ligne de commande via SSH.

Nginx utilise PHP-FMP (une version plus rapide de PHP) plutôt qu’un PHP plus traditionnel.

C'est pourquoi nous installons php-fpm pour gérer les fichiers PHP avec Nginx.

Pré-requis

Installation

  1. Installer php :

    :~$ sudo apt install {php}

  2. Repérer la version de php et la mettre en variable (ici, la version de php installée est 7.4) :

    :~$ php -v
    PHP 8.3.11 (cli) ...
    ...
    :~$ __=$(php -v) ; phpver=php${__:4:3} ; echo $phpver
    php8.3

  3. Installer les modules de php :

    :~$ sudo apt install $phpver-{curl,fpm,gd,intl,mbstring,mysql,sqlite,xml,xmlrpc,zip}

  4. Selon les besoins, installer

    :~$ sudo apt install lib$phpver-embed
    :~$ sudo apt install $phpver-{cgi,cli,common,dev,gmp,json,ldap,odbc,opcache,pgsql,pspell,readline,snmp,sqlite3,tidy,bcmath,bz2,dba,enchant,imap,interbase,phpdbg,soap,sybase,xsl}
    :~$ sudo apt install php-{gearman,geoip,gnupg,xdebug,amqp,apcu,apcu-bc,ds,gmagick,igbinary,imagick,lua,mailparse,memcache,memcached,mongodb,msgpack,oauth,pinba,propro}
    :~$ sudo apt install php-{ps,radius,raphf,redis,rrd,sass,solr,ssh2,stomp,tideways,uploadprogress,uuid,yaml,zmq,http}

    FIXME php-pcov et php-psr introuvables

    Le paquet php8.3-json est un paquet virtuel fourni par :
      php8.3-phpdbg 8.3.11-1+ubuntu24.04.1+deb.sury.org+1
      php8.3-fpm 8.3.11-1+ubuntu24.04.1+deb.sury.org+1
      php8.3-cli 8.3.11-1+ubuntu24.04.1+deb.sury.org+1
      php8.3-cgi 8.3.11-1+ubuntu24.04.1+deb.sury.org+1
      libphp8.3-embed 8.3.11-1+ubuntu24.04.1+deb.sury.org+1
      libapache2-mod-php8.3 8.3.11-1+ubuntu24.04.1+deb.sury.org+1
      Vous devez explicitement sélectionner un paquet à installer.
  5. Démarrer le service fpm :

    :~$ sudo systemctl restart $phpver-fpm.service

  6. Repérer le socket d’écoute de php-fpm :

    :~$ ls -l /var/run/php
    ...
    -rw-r--r-- 1 root     root      5 sept.  7 18:42 php8.3-fpm.pid
    srw-rw---- 1 www-data www-data  0 sept.  7 18:42 php8.3-fpm.sock
    lrwxrwxrwx 1 root     root     30 sept.  7 11:34 php-fpm.sock -> /etc/alternatives/php-fpm.sock

    Ici, il faudra utiliser /var/run/php/php8.3-fpm.sock dans les fichiers de configuration de nginx

  7. Vérifier l'installation de PHP FPM :

    :~$ sudo systemctl status $phpver-fpm.service
    ● php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager
    ...
         Active: active (running) since Mon 2020-09-07 18:42:26 CEST; 7min ago
    ...

  8. Repérer le socket d’écoute de php-fpm :

    :~$ ls -l /var/run/php
    ...
    -rw-r--r-- 1 root     root      5 sept.  7 18:42 php7.4-fpm.pid
    srw-rw---- 1 www-data www-data  0 sept.  7 18:42 php7.4-fpm.sock
    lrwxrwxrwx 1 root     root     30 sept.  7 11:34 php-fpm.sock -> /etc/alternatives/php-fpm.sock

    Ici, il faudra utiliser /var/run/php/php7.4-fpm.sock dans les fichiers de configuration de nginx

  9. Redémarrer le module php-fpm pour valider la configuration :

    :~$ sudo systemctl restart $phpver-fpm.service

Configuration

  1. Envoi d'email par PHP
    1. Installer exim4-config

      :~$ sudo apt install exim4-config

    2. Lancer la configuration :

      :~$ sudo dpkg-reconfigure exim4-config

      1. Accepter la première page (Tab ⇆ puis ↵ Entrée)
      2. 2e page : sélectionner Envoi par relais (« smarthost ») — réception SMTP ou … puis <Ok>.
      3. Accepter les réglages par défaut sauf pour la page Nom réseau ou adresse IP du système « smarthost » : sur laquelle il faut entrer l’adresse du serveur SMTP du fournisseur d’accès à internet
      4. Autres options : laisser les paramètres proposés. Cela active l’envoi de mail avec PHP. Les e-mails envoyés avec la fonction mail() arriveront car la demande d’envoi est trasmise par le serveur local au serveur du FAI.
  2. Augmenter la taille d'upload
    1. Éditez avec les droits d'administration le fichier /etc/php/8.1/fpm/pool.d/www.conf pour ajouter ceci à la fin :
      /etc/php/8.1/fpm/pool.d/www.conf
      ...
      php_admin_value[upload_max_filesize] = 1000M
      php_admin_value[memory_limit] = 10000M ;128M
      php_admin_value[post_max_size] = 1000M
    2. redémarrez le service PHP8.0

Utilisation

Désinstallation

Problèmes connus

Voir aussi


Basé sur « Manuel PHP » par php.net.