Szeretném megosztani tapasztalataimat az Apache 2.4 PCRE2-re való áttérésével kapcsolatban, hiszen még a PHP 7 már régóta támogatja a PCRE2 könyvtárat, míg az open source Apache Software Foundation nem.
Természetesen valószínűleg megelőzöm az Apache PCRE2-támogatásának megjelenését, mert a GitHub-tól használom az Apache forrásait, ami azt jelenti, hogy a PCRE2 már a következő kiadásban elérhető lesz, de azok számára, akik már most szeretnék a PCRE2 támogatást az Apache 2.4-ben, és nem akarnak várni a kiadásra, megosztom az egyik lehetőséget.
A cikk azt feltételezi, hogy az összes szükséges szoftvert forrásból építed, az írás időpontjában a szoftverek és verziók listája:
PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41
Első lépés: a PCRE2 összegyűjtése és lefordítása
Hagyd ki a források hivatalos letöltésének lépését, mert ez túl nyilvánvaló, tehát kicsomagoltad az archívumot, lépj a PCRE2 forráskód könyvtárába, és futtasd a következő parancsot az UTF támogatásához:
./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicodeA prefixben add meg a saját útvonaladat, ha nem akarod a könyvtár alapértelmezett helyét használni:
--prefix=/a/te/útvonalad/a/könyvtárhozEllenkező esetben prefix nélkül építsd.
A többi parancs a 8-bites, 16-bites és 32-bites PCRE kódblokk támogatásának engedélyezésére vonatkozik, ebben a példában így lett az összegyűjtve.
Természetesen fordítsd le ezt a következő parancsok végrehajtásával:
make
make install Ha minden rendben van, és a fordítás hibák nélkül zajlott, lépj a következő lépéshez.
Második lépés: a PCRE2 könyvtár integrálása az APR-be
Mivel az Apache az APR segítségével fordítja a forrásokat, szükséges a könyvtár integrálása magába az APR-be, különben ismeretlen funkciókkal kapcsolatos hibák merülhetnek fel az Apache forráskódjában, mert új PCRE2 funkciókat fogunk használni.
Hagyd ki a források hivatalos letöltésének lépését, mert ez túl nyilvánvaló, tehát kicsomagoltad az archívumot és elvégezted az APR konfigurálását:
./configure --prefix=/etc/webserver/apr-170Természetesen a prefixben add meg a saját útvonaladat, ha nem szeretnéd a könyvtár alapértelmezett helyét használni, vagy ne add meg:
--prefix=/a/te/útvonalad/a/könyvtárhozA konfiguráció végrehajtása után lépj a könyvtárba: /etc/webserver/srcsrv/apr-1.7.0/build
Vagy: /a/te/útvonalad/a/könyvtárhoz/build
Keresd meg az apr_rules.mk fájlt ebben a könyvtárban, és add hozzá a sor végéhez, ahol:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldlA könyvtár integrálása:
-lpcre2-8 -L/az/út/ad/a/pcre2/lib könyvtárhozA gyökérmappába lépünk az APR forráskódjához: /az/út/ad/a/bibliotékához.
A módosított APR-t fordítjuk:
make
make installHa minden rendben van, és a fordítás hibák nélkül zajlott, lépj a következő lépéshez.
Harmadik lépés: az APR-util forrásának összegyűjtése az Apache-hoz
Letöltötted ezt a könyvtárat az hivatalos forrásból, lépj a kibővített APR-util mappa gyökérébe, és az alábbi parancsokat adjuk meg egymás után:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/az/út/ad/a/bibliotékához
make
make installTermészetesen a prefixben add meg a saját útvonaladat, ha nem szeretnéd a könyvtár alapértelmezett helyét használni, vagy ne add meg:
--prefix=/a/te/útvonalad/a/könyvtárhozItt csatlakoztatjuk az APR-t is:
--with-apr=/az/út/ad/a/bibliotékáhozNegyedik lépés: források letöltése az Apache gitből a PCRE2 támogatása érdekében
Fontos: A legfrissebb verzió forrásait a git-ből töltjük le.
Két forrást kell letöltenünk: ap_regex.h és util_pcre.c, az alábbi linkeken:
Most lépj a saját Apache httpd forrásmappádba, és az alábbi parancsokkal építsd fel az Apache-t:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/az/út/ad/a/bibliotékához --with-apr-util=/az/út/ad/a/bibliotékához --with-pcre=/az/út/ad/a/pcre2/bin/pcre2-configTermészetesen a prefixben add meg a saját útvonaladat, ha nem szeretnéd a könyvtár alapértelmezett helyét használni, vagy ne add meg:
--prefix=/az/út/ad/a/Apache httpdTovábbi Apache építési parancsokat a saját belátásod szerint adhatsz meg, értem ezalatt a modulok és könyvtárak bekapcsolásának vagy kikapcsolásának parancsait.
Ezután lépj a saját Apache httpd forrásmappádba, nálam ez:
/etc/webserver/srcsrv/httpd-2.4.41Természetesen belépsz a saját könyvtáradba, cseréljük ki a könyvtárban:
/etc/webserver/srcsrv/httpd-2.4.41/includeAz ap_regex.h fájlt arra, amit a gitből töltöttünk le az Apacheról.
Most lépünk a könyvtárba:
/etc/webserver/srcsrv/httpd-2.4.41/serverCseréljük ki a util_pcre.c fájlt, amit a gitből töltöttünk le az Apacheról
Most már csak a PCRE2 csatlakozását kell hozzáadnunk az Apache-ban, meg kell találnunk az ap_config_auto.h fájlt, amely a következő könyvtárban található:
/etc/webserver/srcsrv/httpd-2.4.41/includeA fájl elejére az alábbi sorokat kell beilleszteni:
/* Load PCRE2 */
#define HAVE_PCRE2 1 Nos, most már készen állunk arra, hogy valóban kompiláljuk az Apache httpd-t a PCRE2 támogatásával.
Lépj a saját Apache httpd forrásmappádba, és ezt az ügyet a következő parancsok végrehajtásával fordítsd le:
make
make installMost, ha minden jól ment és nem volt hiba, akkor egy elkészült és lefordított Apache httpd-t kapsz a PCRE2 támogatásával, ami pozitív változásokat jelent az Apache modulokban, amelyek PCRE reguláris kifejezéseket használnak, például a Modultípus átírása.
Végül ez a módszer lehetővé teszi a PCRE2 használatát az Apache Software Foundation hivatalos kiadása előtt, remélem hamarosan megjelenik a PCRE2 támogatással rendelkező verzió.
A standard .htaccess-ek tesztelése során nem jelentkeztek hibák, ha valakinek van hibája, írjon a megjegyzésekbe.
P.S.
Kicsit feszélyezett a helyzet, hogy a PCRE két különböző verzióját használtam a stackemben, ezért úgy döntöttem, hogy orvoslom ezt.
Forrás: habr.com
