Je voulais vous poser des questions sur les méthodes de configuration PHP / Apache que vous connaissez, leurs avantages et leurs inconvénients. Je vais commencer moi-même:
---------------- PHP comme module Apache ----------------
Avantages : bonne vitesse car vous n'avez pas besoin de démarrer exe à chaque fois, surtout en mode mpm-worker . Vous pouvez également utiliser divers accélérateurs PHP dans ce mode comme APC ou eAccelerator.
Inconvénients : si vous exécutez apache en mode mpm-worker, vous pouvez rencontrer des problèmes de stabilité car chaque problème dans un script php entraînera une instabilité de l'ensemble du pool de threads de ce processus apache. Dans ce mode également, tous les scripts sont exécutés au nom de l'utilisateur apache. C'est mauvais pour la sécurité. La configuration de mpm-worker nécessite PHP compilé en mode thread-safe. Au moins les référentiels par défaut CentOS et RedHat n'ont pas de version PHP thread-safe, donc sur ces systèmes d'exploitation, vous devez compiler au moins PHP vous-même (il existe un moyen d'activer le mpm de travail sur Apache). L'utilisation de binaires PHP thread-safe est considérée comme expérimentale et instable. De plus, de nombreuses extensions PHP ne prennent pas en charge le mode thread-safe ou n'ont pas été bien testées en mode thread-safe.
---------------- PHP comme CGI ----------------
Cela semble être la configuration par défaut la plus lente qui semble être un "con" lui-même;)
---------------- PHP comme CGI via mod_suphp ----------------
Avantages : suphp vous permet d'exécuter des scipts php au nom du propriétaire du fichier de script. De cette façon, vous pouvez séparer en toute sécurité différents sites sur la même machine. De plus, suphp permet d'utiliser différents fichiers php.ini par hôte virtuel.
Inconvénients : PHP en mode CGI signifie moins de performances. Dans ce mode, vous ne pouvez pas utiliser d'accélérateurs php comme APC, car chaque fois qu'un nouveau processus est généré pour gérer le script, rendant le cache du processus précédent inutile. BTW, savez-vous comment appliquer un accélérateur dans cette configuration? J'ai entendu parler de l'utilisation de shm pour le cache de bytecode php. De plus, vous ne pouvez pas configurer PHP via des fichiers .htaccess dans ce mode. Vous devrez installer P ECL htscanner pour cela si vous devez définir diverses options par script via .htaccess (directives php_value / php_flag)
---------------- PHP comme CGI via suexec ----------------
Cette configuration ressemble à celle de suphp, mais j'ai entendu dire qu'elle est plus lente et moins sûre. Presque les mêmes avantages et inconvénients s'appliquent.
---------------- PHP comme FastCGI ----------------
Avantages : La norme FastCGI permet à un processus php unique de gérer plusieurs scripts avant de tuer le processus php. De cette façon, vous gagnez en performances car vous n'avez pas besoin de lancer un nouveau processus php pour chaque script. Vous pouvez également utiliser des accélérateurs PHP dans cette configuration (voir la section contre pour les commentaires). De plus, FCGI presque comme suphp permet également aux processus php d'être exécutés au nom de certains utilisateurs. mod_fcgid semble avoir le support fcgi le plus complet et la flexibilité pour apache.
Inconvénients : L'utilisation de l'accélérateur php en mode fastcgi entraînera une consommation de mémoire élevée car chaque processus PHP aura son propre cache de bytecode (sauf s'il existe un accélérateur qui peut utiliser la mémoire partagée pour le cache de bytecode. Existe-t-il un tel?). FastCGI est également un peu complexe à configurer. Vous devez créer divers fichiers de configuration et apporter des modifications à la configuration.
Il semble que fastcgi soit la configuration PHP la plus stable, sécurisée, rapide et flexible, cependant, un peu difficile à configurer. Mais, peut-être, j'ai raté quelque chose?
Les commentaires sont les bienvenus!