La version Apache HTTP Server 2.4.9 récemment publiée sera bientôt disponible dans les mises à jour de Fedora 20.

Cette version intègre un correctif (pas encore appliqué dans la version officielle) qui permet de rediriger les requêtes vers un mandataire FastCGI à l'aide de la directive SetHandler.

La directive ProxyPassMatch étant évaluée au tout début d'une requête

  • les directives AddType (pour le MultiView) ou DirectoryIndex ne sont pas utilisables
  • la gestion des droits par dossier n'est pas prise en compte
  • chaque Alias doit être complété d'une règle de proxy

La directive SetHandler qui est évaluée à la fin est donc beaucoup plus pratique, elle est d'ailleurs utilisée pour mod_php

<FilesMatch \.phps$>
      SetHandler application/x-httpd-php-source
</FilesMatch>

Grâce à cette évolution on va pouvoir utiliser php-fpm aussi simplement que mod_php.

Pour rediriger les scripts PHP vers le serveur FPM:

<FilesMatch \.php$>
     SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

Attention, si vous désinstallez ou désactivez mod_php vous devez aussi supprimer toutes les directives php_value et php-flag, par exemple en les rendant conditionnelles :

<IfModule  mod_php5.c>
       php_value session.save_handler "files"
        php_value session.save_path    "/var/lib/php/session"
        php_value soap.wsdl_cache_dir  "/var/lib/php/wsdlcache"
</IfModule>

Au passage, on peut en profiter pour abandonner le MPM prefork au profit d'un mode utilisant les threads :

#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule mpm_event_module modules/mod_mpm_event.so

Ensuite, les applications web en PHP fonctionnent normalement (sauf celle utilisant l'authentification http, qui n'est pas encore supportée par FPM).

A suivre : l'utilisation des Sockets du domaine Unix, annoncé pour la 2.4.9 mais ne fonctionne que partiellement (les correctifs sont en cours de revue).