Qu'est-ce que mod_php?

108

En passant par un didacticiel Zend , je suis tombé sur la déclaration suivante:

Notez que les paramètres php_flag dans .htaccess ne fonctionnent que si vous utilisez mod_php.

Quelqu'un peut-il expliquer ce que cela signifie?

SpikETidE
la source

Réponses:

159

mod_phpsignifie PHP, en tant que module Apache .

Fondamentalement, lors du chargement en mod_phptant que module Apache, il permet à Apache d'interpréter les fichiers PHP (ceux-ci sont interprétés par mod_php) .


EDIT: Il y a (au moins) deux façons d'exécuter PHP, lorsque vous travaillez avec Apache:

  • Utilisation de CGI : un processus PHP est lancé par Apache, et c'est ce processus PHP qui interprète le code PHP - pas Apache lui-même
  • Utilisation de PHP comme module Apache (appelé mod_php) : l'interpréteur PHP est alors en quelque sorte "intégré" dans le processus Apache: il n'y a pas de processus PHP externe - ce qui signifie qu'Apache et PHP peuvent mieux communiquer .


Et rééditez, après le commentaire : en utilisant CGI oumod_php c'est à vous: ce n'est qu'une question de configuration de votre serveur web.

Pour savoir de quelle manière est actuellement utilisé sur votre serveur, vous pouvez vérifier la sortie de phpinfo(): il devrait y avoir quelque chose indiquant si PHP fonctionne via mod_php (ou mod_php5) , ou via CGI.

Vous voudrez peut-être aussi jeter un œil à la php_sapi_name()fonction: elle renvoie le type d'interface entre le serveur Web et PHP .


Si vous archivez les fichiers de configuration de votre Apache, lors de l'utilisation mod_php, il devrait y avoir une LoadModuleligne ressemblant à ceci:

LoadModule php5_module        modules/libphp5.so

(Le nom du fichier, à droite, peut être différent - sous Windows, par exemple, il devrait être a .dll)

Pascal MARTIN
la source
J'ai utilisé xampp pour installer les packages php, apache et mysql ... Alors, quelle sera ma configuration?
SpikETidE
Vous devriez l'activer si PHP ne fonctionne pas actuellement. Si PHP fonctionne déjà, il doit utiliser CGI, auquel cas vous devrez probablement faire plus que simplement activer le module. Le module peut même ne pas exister sur le système.
d11wtq
1
Ouaip..!. Quand j'exécute phpinfo (), je vois que mod_php5 est inclus dans la section Modules chargés ... Et cela signifie que je l'ai exécuté en tant que module Apache ... n'est-ce pas?
SpikETidE
3
mod_phpest de loin la configuration la plus courante.
troelskn
@Pascal, je dirais que ce mod_phpn'est pas du vrai PHP; c'est juste un addon Apache. Ou plutôt, je pense que vous devriez commencer la réponse avec une définition de Que signifie exactement PHP?
Pacerier
58

Cette réponse est tirée de TuxRadar :

Lorsque vous exécutez PHP via votre serveur Web, il existe deux options distinctes: l'exécuter à l'aide de CGI SAPI de PHP, ou l'exécuter en tant que module pour le serveur Web. Chacun a ses propres avantages, mais, dans l'ensemble, le module est généralement préféré.

Exécuter PHP en tant que CGI signifie que vous indiquez essentiellement à votre serveur Web l'emplacement du fichier exécutable PHP, et le serveur exécute cet exécutable, en lui donnant le script que vous avez appelé, chaque fois que vous visitez une page. Cela signifie que chaque fois que vous chargez une page, PHP doit lire php.ini et définir ses paramètres, il doit charger toutes ses extensions, puis il doit commencer à analyser le script - il y a beaucoup de travail répété.

Lorsque vous exécutez PHP en tant que module, PHP se trouve littéralement à l'intérieur de votre serveur Web - il ne démarre qu'une seule fois, ne charge ses paramètres et extensions qu'une seule fois et peut également stocker des informations entre les sessions. Par exemple, les accélérateurs PHP s'appuient sur la capacité de PHP à enregistrer les données mises en cache entre les requêtes, ce qui est impossible avec la version CGI.

L'avantage évident d'utiliser PHP en tant que module est la vitesse - vous verrez une grande augmentation de vitesse si vous convertissez de CGI en module. Beaucoup de gens, en particulier les utilisateurs de Windows, ne s'en rendent pas compte et continuent à utiliser le php.exe CGI SAPI, ce qui est dommage - le module est généralement trois à cinq fois plus rapide.

Il y a un avantage clé à utiliser la version CGI, cependant, et c'est que PHP lit ses paramètres chaque fois que vous chargez une page. Avec PHP fonctionnant en tant que module, toutes les modifications que vous apportez dans le fichier php.ini ne sont appliquées qu'après le redémarrage de votre serveur Web, ce qui rend la version CGI préférable si vous testez beaucoup de nouveaux paramètres et souhaitez voir des réponses instantanées.

SpikETidE
la source
@JohannEchavarria, À moins que vous n'ayez ajouté beaucoup de choses folles, le redémarrage du serveur ne prendra que quelques secondes. Pour les systèmes modernes «normaux» avec SSD, c'est moins de 2 secondes.
Pacerier
12

Votre serveur doit avoir les modules php installés pour pouvoir analyser le code php.

Si vous êtes sur Ubuntu, vous pouvez le faire facilement avec

sudo apt-get install apache2

sudo apt-get install php5

sudo apt-get install libapache2-mod-php5

sudo /etc/init.d/apache2 restart

Sinon, vous pouvez compiler apache avec php: http://dan.drydog.com/apache2php.html

Spécifier le système d'exploitation de votre serveur aidera les autres à répondre plus spécifiquement.

daté
la source
5

Cela signifie que vous devez avoir PHP installé en tant que module dans Apache, au lieu de le démarrer en tant que script CGI.

Ondrej Slinták
la source
3

Juste pour ajouter ces réponses, mod_php est la méthode la plus ancienne et la plus lente disponible sur le serveur HTTPD pour utiliser PHP. Cela n'est pas recommandé, sauf si vous exécutez d'anciennes versions d'Apache HTTPD et PHP. php-fpm et proxy_cgi sont les méthodes préférées.

Tejas Sarade
la source
0

mod_php est un interpréteur PHP.

D'après la documentation, une capture importante de mod_php est,

"mod_php n'est pas thread-safe et vous oblige à vous en tenir à prefork mpm (multiprocess, pas de threads), qui est la configuration la plus lente possible"

kta
la source