Je veux partager mon expérience de la migration d'Apache 2.4 vers PCRE2, car même PHP 7 prend en charge la bibliothèque PCRE2 depuis un certain temps, mais la fondation open source Apache Software est toujours à la traîne.
Bien sûr, je devance probablement la sortie d'Apache avec support PCRE2, car j'utilise les sources depuis le dépôt Git d'Apache, ce qui indique que le support de PCRE2 pourrait être présent dans la prochaine version. Mais pour ceux qui souhaitent déjà utiliser PCRE2 avec Apache 2.4 et ne veulent pas attendre la version finale, je partage l'une des méthodes.
Cet article suppose que vous compilez tout le logiciel nécessaire à partir des sources. La liste du logiciel et des versions lors de la rédaction de l'article :
PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41
Étape 1 : Compilation de PCRE2
Nous passerons sur le téléchargement des sources officielles, car c'est trop évident. Vous avez donc extrait l'archive, allez dans le dossier contenant les sources de PCRE2 et exécutez la commande suivante pour activer UTF :
./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicodeDans le préfixe, indiquez votre chemin si vous ne souhaitez pas utiliser l'emplacement par défaut pour l'installation de la bibliothèque :
--prefix=/votre/chemin/vers/la/bibliothèqueSinon, compilez sans préfixe.
Les autres options permettent d'inclure le support pour les blocs de code PCRE 8 bits, 16 bits et 32 bits. Dans cette configuration, la compilation a été réalisée avec ces options.
Bien sûr, compilez avec les commandes suivantes :
make
make install Si tout se passe bien et que la compilation n'a pas rencontré d'erreurs, passons à l'étape suivante.
Étape 2 : Intégration de la bibliothèque PCRE2 dans APR
Étant donné qu'Apache compile ses sources à l'aide d'APR, nous devons intégrer la bibliothèque dans APR lui-même, sinon des erreurs de fonctions inconnues pourraient survenir dans les sources d'Apache, car nous allons utiliser de nouvelles fonctions de PCRE2.
Nous allons ignorer le moment de téléchargement des sources officielles, car cela est trop évident. Vous avez ainsi extrait l'archive et configuré APR :
./configure --prefix=/etc/webserver/apr-170Bien sûr, dans le préfixe, indiquez votre chemin si vous ne souhaitez pas utiliser l'emplacement par défaut pour l'installation de la bibliothèque, sinon ne l'indiquez pas :
--prefix=/votre/chemin/vers/la/bibliothèqueAprès avoir configuré, allez dans le répertoire : /etc/webserver/srcsrv/apr-1.7.0/build
Ou : /votre/chemin/vers/la/bibliothèque/build
Trouvez le fichier apr_rules.mk dans ce répertoire, et ajoutez à la fin de la ligne où :
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldlIntégration de la bibliothèque :
-lpcre2-8 -L/votre/chemin/vers/la/bibliothèque/pcre2/libNous allons sauvegarder en accédant au répertoire racine des sources APR : /votre/chemin/vers la bibliothèque.
Nous compilons notre APR modifié :
make
make installSi tout se passe bien et que la compilation n'a pas rencontré d'erreurs, passons à l'étape suivante.
Étape trois : Nous compilons à partir des sources APR-util pour Apache
Vous avez téléchargé cette bibliothèque à partir de la source officielle, accédez au dossier racine de l'archive décompressée de APR-util, et entrez successivement les commandes suivantes :
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/votre/chemin/vers la bibliothèque apr
make
make installBien sûr, dans le préfixe, indiquez votre chemin si vous ne souhaitez pas utiliser l'emplacement par défaut pour l'installation de la bibliothèque, sinon ne l'indiquez pas :
--prefix=/votre/chemin/vers/la/bibliothèqueIci, nous connectons également notre APR :
--with-apr=/votre/chemin/vers la bibliothèque aprÉtape quatre : Téléchargez les sources depuis le dépôt Git d'Apache pour supporter PCRE2
Important : Téléchargez les sources de la dernière version à partir de Git.
Nous devons télécharger deux sources : ap_regex.h et util_pcre.c, les liens sont ci-dessous :
Nous allons maintenant dans votre répertoire de sources Apache httpd et construisons Apache avec les commandes suivantes :
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/votre/chemin/vers la bibliothèque apr --with-apr-util=/votre/chemin/vers la bibliothèque apr-util --with-pcre=/votre/chemin/vers la bibliothèque pcre2/bin/pcre2-configBien sûr, dans le préfixe, indiquez votre chemin si vous ne souhaitez pas utiliser l'emplacement par défaut pour l'installation de la bibliothèque, sinon ne l'indiquez pas :
--prefix=/votre/chemin/vers Apache httpdVous pouvez également ajouter d'autres commandes pour la construction d'Apache à votre convenance, je parle des commandes pour activer ou désactiver des modules et des bibliothèques.
Ensuite, allez dans votre répertoire de source d'Apache httpd, chez moi c'est :
/etc/webserver/srcsrv/httpd-2.4.41Vous allez bien sûr dans votre propre répertoire, vous remplacez dans le répertoire :
/etc/webserver/srcsrv/httpd-2.4.41/includeLe fichier ap_regex.h, par celui que nous avons téléchargé depuis le dépôt Git d'Apache.
Nous allons également dans le répertoire :
/etc/webserver/srcsrv/httpd-2.4.41/serverRemplacez le fichier util_pcre.c, par celui que nous avons téléchargé depuis le dépôt Git d'Apache
Il ne reste plus qu'à ajouter la connexion PCRE2 dans Apache lui-même, vous devez trouver le fichier ap_config_auto.h, il se trouve dans le répertoire :
/etc/webserver/srcsrv/httpd-2.4.41/includeAu tout début de ce fichier, insérez les lignes suivantes :
/* Load PCRE2 */
#define HAVE_PCRE2 1 Voilà, maintenant nous sommes prêts pour le véritable moment de la compilation d'Apache httpd avec le support de PCRE2.
Accédez à votre répertoire de sources Apache httpd, compilez ceci en exécutant successivement les commandes :
make
make installSi tout s'est bien passé et sans erreurs, vous aurez un Apache httpd construit et compilé avec le support de PCRE2, ce qui signifie des améliorations positives dans les modules Apache utilisant les expressions régulières PCRE, l'un d'eux étant le Module rewrite.
En conclusion, cette méthode permet d'utiliser PCRE2 avant la version officielle de la Apache Software Foundation, j'espère qu'une version avec support PCRE2 sortira bientôt.
De plus, lors des tests des .htaccess standards, aucune erreur ne s'est produite, si quelqu'un rencontre des erreurs, veuillez les signaler dans les commentaires.
P.S.
J'ai été un peu stressé par la situation d'utiliser deux versions différentes de PCRE pour ma pile, et j'ai décidé de corriger cela.
Source : habr.com
