Outils pour utilisateurs

Outils du site


Panneau latéral

Traductions de cette page:

Avez-vous remarqué ?

Il n'y a aucune publicités ou scripts de profilage (tracker) sur ce site.

Ce n'est que grâce à votre aide que l'auteur peut financer l'hébergement et le temps consacré à cet ouvrage.

Si vous voulez l'encourager, vous pouvez faire un don ♥. (même un tout petit ;-))

À propos

Cet ouvrage est publié sous licence CC-BY-SA à l'aide de dokuwiki. Il a été écrit par un libriste curieux (et des contributeurs) qui s'est dit “si moi j'y arrive, pourquoi pas les autres?”. Merci de prévenir si vous partager ce texte ailleurs, juste pour information ;).

Si vous trouvez une erreur, souhaitez contribuer ou avez besoin d'aide, n'hésitez pas à contacter l'auteur.

Créer un livre

 N'hésitez pas à vous servir du bouton “Ajouter au livre” à droite afin de préparer une version imprimable de cette documentation.

4-httpd:php

PHP

Minimum requis

Il est fort possible que vous souhaitiez ajouter le support de PHP à votre site, surtout si vous voulez héberger un moteur de blog ou un CMS. Il s'agit d'un langage de programmation offrant davantage de possibilités que de simples pages HTML.

La commande suivante permet d'installer PHP (à remplacer par la version souhaitée):

# pkg_add php-7.3.10

Pour lister toutes les versions de PHP disponibles, tapez :

# pkg_info -Q php

Après installation du paquet, on active PHP et on le démarre :

# rcctl enable php73_fpm
# rcctl start php73_fpm

Ici, “73” correspond à la version 7.3.

Nous pouvons maintenant modifier la configuration de httpd pour lui dire de servir les pages au travers de PHP. Quelques lignes sont à ajouter au fichier /etc/httpd.conf :

server "chezmoi.tld" {
        listen on * port 80
        root "/htdocs/monsupersite"
        directory index index.php

        location "*.php*" {
                fastcgi socket "/run/php-fpm.sock"
        }
}

Remarquez l'instruction directory index index.php. Elle permet de rendre l'adresse http://chezmoi.tld/ équivalente à l'adresse http://chezmoi.tld/index.php.

Et voilà, les fichiers “.php” seront correctement interprétés. Cette configuration est suffisante dans la plupart des cas.

PHP avec des modules et du chroot

Je vous propose dans cette partie d'aller un peu plus loin pour préparer l'installation d'applications plus complètes (blog, CMS…) en activant des extensions et des options qui ne le sont pas par défaut, toujours dans un souci de sécurité.

Ajouter des modules PHP

Vous avez peut-être remarqué lors de l'installation de PHP une note concernant le dossier /usr/local/share/doc/pkg-readmes. Ce dernier contient des informations très intéressantes que nous allons appliquer ici.

Les extensions installées sont dans le dossier /etc/php-7.3.sample. Afin de les activer, il faut les relier dans le dossier /etc/php-7.3. On peut le faire en deux commandes :

# cd /etc/php-7.3.sample
# for i in *; do ln -sf ../php-7.3.sample/$i ../php-7.3/; done
# rcctl restart php73_fpm

Ainsi, toutes les extensions disponibles pour PHP sont activées. Pensez-y si vous en installez de nouvelles plus tard.

La plupart des extensions sont déjà présentes, mais vous voudrez peut-être y ajouter les paquets suivants (en adaptant le numéro de version):

  • php-curl-7.3.10,
  • php-gd-7.3.10,
  • php-intl-7.3.10,
  • php-zip-7.3.10.
  • libmcrypt qui donne accès à des fonctionnalités de cryptographie (remplace mcrypt).
  • pear, (ainsi que des paquets “pecl-…” qui sont des extensions pratiques)

Modifier la configuration de PHP

On peut souhaiter modifier la configuration de PHP. Il faut pour cela éditer le fichier /etc/php-7.3.ini. Je vous conseille notamment de modifier ces quelques lignes :

; Augmente la taille des fichiers que vous pouvez envoyer sur le site
post_max_size = 10M
upload_max_filesize = 10M
; une application php peut chercher du contenu distant (images..)
allow_url_fopen = On
; Le fuseau horaire
date.timezone = Europe/Paris
; configuration du cache
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.enable_file_override=1

Configuration relative au chroot

Il est possible que votre site doive récupérer des informations ou données venant d'autres sites. Il a donc besoin de résoudre des noms de domaines, vérifier des certificats, connaître l'heure du système. Ces éléments sont situés dans le dossier /etc. Malheureusement, si vous vous souvenez bien, le serveur http est dans un chroot. Où se trouve ce chroot déjà?

Dans /var/www !!!

Très bien Jean-Eudes! Il y en a au moins un qui suit. ^^

On va donc être obligé de mettre quelques fichiers qui normalement se trouvent dans /etc à l'intérieur du chroot.

Voici la procédure :

# cd /var/www     # On va dans le chroot
# mkdir etc/      # On fabrique un dossier etc
# cp /etc/resolv.conf etc/resolv.conf            
# cp /etc/hosts etc/hosts              
# cp /etc/localtime etc/localtime                
# mkdir etc/ssl   # On cree un autre dossier
# install -m 444 -o root -g bin /etc/ssl/cert.pem /etc/ssl/openssl.cnf /var/www/etc/ssl

Ces fichiers ne doivent qu'être lisibles et accessibles :

chmod -R 444 /var/www/etc/*
chmod -R a+X /var/www/etc/

Les fichiers copiés servent notamment à :

  • /etc/resolv.conf et /etc/hosts : Permettent à PHP de traduire un nom de domaine en adresse IP.
  • /etc/localtime : Permet d'être à la bonne heure.
  • /etc/ssl/* : Fichiers permettant de vérifier les certificats SSL. Ce dernier doit être régulièrement mis à jour. Ajoutez donc cette ligne dans le fichier /etc/monthly.local :
install -m 444 -o root -g bin /etc/ssl/cert.pem /etc/ssl/openssl.cnf /var/www/etc/ssl

Certaines applications ont besoin d'être capable d'envoyer des mails (forums, wikis…). Puisque PHP est dans un chroot, il ne pourra pas communiquer avec le programme responsable de l'envoi des mails : sendmail. Heureusement, lorsque vous avez installé PHP, l'outil femail-chroot a été lui aussi installé grâce au jeu des dépendances. Pour que PHP puisse l'utiliser, il faut copier “sh” dans le chroot (voir le fichier /usr/local/share/doc/pkg-readmes/femail-chroot*).

# cp /bin/sh /var/www/bin/

Une fois toutes vos modifications réalisées, n'oubliez pas de relancer PHP avec rcctl restart php73_fpm.

Contribu(trices|teurs) :

prx
4-httpd/php.txt · Dernière modification: 2019/11/27 20:06 de prx