web-dev-qa-db-fra.com

Qu'est-ce que mod_php?

En passant par un tutoriel 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?

100
SpikETidE

mod_php signifie PHP, en tant que module Apache .

Fondamentalement, lors du chargement de mod_php En tant que module Apache, cela permet à Apache d’interpréter les fichiers PHP (ceux-ci sont interprétés par mod_php) .


EDIT: Il y a (au moins) deux manières de faire fonctionner PHP, quand travailler 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 en tant que module Apache (appelé mod_php) : l'interprète PHP est alors en quelque sorte "intégré" dans le processus Apache: il n'y a pas de processus externe PHP - ce qui signifie qu'Apache et PHP peuvent mieux communiquer .


Et ré-éditer, après le commentaire : utiliser CGI ou mod_php, Ça dépend de vous: c'est une affaire de configuration de votre serveur web.

Pour savoir quel chemin est actuellement utilisé sur votre serveur, vous pouvez vérifier la sortie de phpinfo() : il devrait y avoir quelque chose indiquant si PHP est en cours d'exécution via mod_php (ou mod_php5) , ou via CGI.

Vous voudrez peut-être aussi jeter un coup d’œil sur php_sapi_name() function: it renvoie le type d'interface entre le serveur Web et PHP .


Si vous archivez vos fichiers de configuration Apache, lorsque vous utilisez mod_php, Il devrait y avoir une ligne LoadModule ressemblant à ceci:

LoadModule php5_module        modules/libphp5.so

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

145
Pascal MARTIN

Cette réponse est tirée de TuxRadar :

Lorsque vous exécutez PHP via votre serveur Web, vous disposez de deux options distinctes: l’exécuter à l’aide de la CGI SAPI de PHP, ou en tant que module pour le serveur Web. Chacune a ses propres avantages, mais globalement, , le module est généralement préféré.

Exécuter PHP en tant que CGI signifie que vous indiquez à votre serveur Web l'emplacement du fichier exécutable PHP, et le serveur l'exécute en lui attribuant le script 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 réside littéralement dans votre serveur Web - il ne démarre qu'une fois, ne charge ses paramètres et ses extensions qu'une seule fois, et peut également Par exemple, PHP les accélérateurs reposent sur PHP), ce qui permet de sauvegarder des données en cache dans des requêtes, ce qui est impossible avec la version CGI.

L’avantage évident d’utiliser PHP en tant que module est la vitesse - vous constaterez un gain de vitesse considérable si vous passez de la CGI à un module. De nombreuses personnes, en particulier les utilisateurs de Windows, ne s’en rendent pas compte. Continuez à utiliser le php.exe CGI SAPI, ce qui est dommage - le module est généralement trois à cinq fois plus rapide.

L’utilisation de la version CGI présente toutefois l’un des principaux avantages: PHP lit ses paramètres chaque fois que vous chargez une page. Avec PHP s'exécutant en tant que Dans un module, les modifications que vous apportez dans le fichier php.ini ne sont pas prises en compte avant le redémarrage de votre serveur Web, ce qui rend la version CGI préférable si vous testez de nombreux nouveaux paramètres et souhaitez obtenir des réponses instantanées.

56
SpikETidE

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 votre système d'exploitation serveur aidera les autres à répondre plus précisément.

9
cdated

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.

4
Ondrej Slinták

Ajoutons simplement à ces réponses que mod_php est la méthode la plus ancienne et la plus lente disponible sur le serveur HTTPD pour utiliser PHP. Il est déconseillé de l'utiliser sauf si vous utilisez d'anciennes versions d'Apache HTTPD et PHP. php-fpm et proxy_cgi sont les méthodes préférées.

2
Tejas Sarade

mod_php est un interpréteur PHP.

De docs, une capture importante de mod_php est,

"mod_php n'est pas thread-safe et vous oblige à rester avec le prefork mpm (processus multiple, pas de threads), qui est la configuration la plus lente possible"

0
kta