Je veux partager mon expérience de la traduction d'Apache 2.4 en PCRE2, car même PHP 7 supporte depuis longtemps la bibliothèque PCRE2, et la fondation open source Apache Software Foundation n'est toujours pas là.
Bien sûr, je suis probablement en avance sur la sortie d'Apache avec le support PCRE2 maintenant, car j'utilise les sources du géo Apache, qui nous dit que le support PCRE2 est déjà possible dans la prochaine version, mais pour ceux qui veulent déjà le support PCRE2 dans Apache 2.4, et qui ne veulent pas attendre libérer le partage d'une des façons.
L'article suppose que vous collectez tous les logiciels nécessaires à partir de la source, une liste des logiciels et des versions au moment de la rédaction:
PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41Première étape: créer et compiler PCRE2
Nous allons omettre le moment de télécharger la source à partir des sources car c'est trop évident, donc vous avez décompressé l'archive, allez dans le dossier avec la source PCRE2 et exécutez la commande suivante pour prendre en charge UTF:
./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicode
Dans le préfixe, spécifiez votre chemin d'accès si vous ne souhaitez pas utiliser l'emplacement standard pour installer la bibliothèque:
--prefix=///
Sinon, collectez sans préfixe.
Les commandes restantes indiquent l'inclusion de la prise en charge des blocs de code 8 bits, 16 bits et 32 bits PCRE, dans ce mode de réalisation, l'assemblage a été effectué avec eux.
Et bien sûr, nous compilons ce cas en utilisant l'exécution séquentielle des commandes:
make make install
Si toutes les règles et la compilation se sont bien déroulées, passez à l'étape suivante.
Deuxième étape: connectez la bibliothèque PCRE2 à l'APR
Étant donné qu'Apache compile les sources en utilisant APR, nous devons connecter la bibliothèque dans l'APR lui-même, sinon des erreurs peuvent se produire sur des fonctions inconnues dans les sources Apache, car nous utiliserons les nouvelles fonctions PCRE2.
Nous allons omettre le moment de télécharger la source à partir des sources car c'est trop évident, vous avez donc déballé l'archive et configuré l'APR:
./configure --prefix=/etc/webserver/apr-170
Naturellement, indiquez votre chemin dans le préfixe si vous ne souhaitez pas utiliser l'emplacement standard pour l'installation de la bibliothèque, ou ne spécifiez pas:
--prefix=///
Une fois la configuration terminée, accédez au répertoire: /etc/webserver/srcsrv/apr-1.7.0/build
Eh bien, ou: / votre / chemin / vers la bibliothèque / build
Recherchez le fichier apr_rules.mk dans ce répertoire et ajoutez à la fin de la ligne où:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl
Connexion à la bibliothèque:
-lpcre2-8 -L/// pcre2/lib
Enregistrez, allez dans le répertoire racine des sources APR: / votre / chemin / vers la bibliothèque.
Compilez notre APR modifié:
make make install
Si toutes les règles et la compilation se sont bien déroulées, passez à l'étape suivante.
Troisième étape: créer APR-util pour Apache à partir de la source
Vous avez téléchargé cette bibliothèque à partir du bureau de la source, accédez au dossier racine de l'archive décompressée avec APR-util et entrez les commandes suivantes de manière séquentielle:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/// apr make make install
Naturellement, indiquez votre chemin dans le préfixe si vous ne souhaitez pas utiliser l'emplacement standard pour l'installation de la bibliothèque, ou ne spécifiez pas:
--prefix=///
Ici aussi, nous connectons notre APR:
--with-apr=/// apr
Quatrième étape: télécharger des sources depuis Apache Git pour prendre en charge PCRE2
Important: Téléchargez la source à partir de la dernière version de la gita.
Nous devons télécharger deux sources telles que ap_regex.h et util_pcre.c, les liens ci-dessous:
ap_regex.hutil_pcre.cMaintenant, nous allons dans notre répertoire source Apache httpd et construisons Apache avec les commandes suivantes:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/// apr --with-apr-util=/// apr-util --with-pcre=/// pcre2/bin/pcre2-config
Naturellement, indiquez votre chemin dans le préfixe si vous ne souhaitez pas utiliser l'emplacement standard pour l'installation de la bibliothèque, ou ne spécifiez pas:
--prefix=/// Apache httpd
Aussi, spécifiez des commandes supplémentaires pour construire Apache à votre discrétion, je veux dire les commandes pour activer la désactivation des modules et des bibliothèques.
Ensuite, allez dans votre répertoire source Apache httpd, j'ai ceci:
/etc/webserver/srcsrv/httpd-2.4.41
Vous allez naturellement dans votre répertoire, remplacez dans le répertoire:
/etc/webserver/srcsrv/httpd-2.4.41/include
Le fichier ap_regex.h, que nous avons téléchargé depuis le git Apache.
Allez également dans le répertoire:
/etc/webserver/srcsrv/httpd-2.4.41/server
Remplacez le fichier util_pcre.c par l'Apache que nous avons téléchargé depuis
Il reste maintenant à 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/include
Au tout début de ce fichier, insérez les lignes suivantes:
#define HAVE_PCRE2 1
Eh bien, nous sommes maintenant prêts pour le vrai moment de la compilation d'Apache httpd avec le support PCRE2.
Nous allons dans notre répertoire source Apache httpd, compilons ce cas en utilisant l'exécution séquentielle des commandes:
make make install
Maintenant, si tout s'est bien passé et sans erreur, alors vous aurez assemblé et compilé Apache httpd avec le support PCRE2, ce qui signifie des changements positifs dans les modules Apache à l'aide d'expressions régulières PCRE, dont la réécriture de module.
En conclusion, cette méthode permet d'utiliser PCRE2 avant la sortie d'Apache Software Foundation, j'espère qu'une version avec support PCRE2 sera bientôt disponible.
De plus, lors des tests du .htaccess standard, aucune erreur ne s'est produite, si quelqu'un a des erreurs, écrivez dans les commentaires.
PS
J'étais un peu gêné par la situation d'utiliser deux versions différentes de PCRE pour ma pile, et j'ai décidé de le réparer.