CGI - Interface de passerelle commune
Apache peut être configuré pour invoquer l'interpréteur php en tant que programme cgi. Cela signifie que le binaire php-cgi doit être exécuté en externe et que le script php doit être exécuté par lui et la sortie sera renvoyée à apache. C'est une façon d'exécuter php avec apache. D'autres méthodes incluent le module partagé, fastcgi, etc. Lisez mon article précédent sur l'apis du serveur php pour en savoir plus sur les différentes options pour exécuter php avec apache.
Puisqu'en mode cgi, php est exécuté séparément, il est possible d'utiliser un mpm apache fileté comme worker. Dans cet article, nous allons configurer apache et php ensemble via le cgi.
Installer des packages
Les packages nécessaires à installer incluent apache, mpm worker, php5, php cgi. Installez-les tous d'un seul coup à l'aide de la commande apt-get
# sudo apt-get install apache2 apache2-mpm-worker php5 php5-cgi
Activer les actions mod dans apache.
$ sudo a2enmod actions
Si vous avez déjà installé apache et php avec le mod php, vous devez d'abord désactiver le mod php
$ sudo a2dismod php5
Configurer Apache
Configurez maintenant apache pour exécuter php en tant que cgi. La configuration se fait dans le bloc vhost concerné.
Les fichiers de configuration de l'hôte virtuel Apache se trouvent à l'emplacement suivant
/etc/apache2/sites-enabled/
Le fichier vhost par défaut est 000-default.conf qui est présent sur la plupart des systèmes.
Quelques directives nécessaires doivent être ajoutées dans le bon bloc de répertoire dans le fichier de configuration qui indiquera à apache d'utiliser le binaire php-cgi pour s'exécuter fichiers se terminant par ".php".
Les directives sont AddHandler, Action et ScriptAlias. Une configuration minimale ressemble à ceci
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all AddHandler cgi-handler .php Action cgi-handler /local-bin/php-cgi </Directory> ScriptAlias /local-bin /usr/bin
La ligne AddHandler déclare un gestionnaire appelé cgi-handler pour les fichiers .php. Cela peut être nommé à n'importe quoi.
La ligne Action indique à apache d'exécuter cgi-handler en utilisant le programme /local-bin/php-cgi, qui est le binaire php cgi. Maintenant, ce chemin n'est pas un vrai.
La ligne ScriptAlias mappe /local-bin à /usr/bin. Donc le chemin /local-bin/php-cgi devient /usr/bin/php-cgi qui est le chemin réel du binaire php-cgi sur ubuntu/debian.
Redémarrez apache maintenant
# service apache2 restart
Placez un fichier php avec phpinfo() dans la racine Web et ouvrez-le depuis le navigateur. L'API du serveur doit être signalée comme "CGI/FastCGI".