Szeretném megosztani az Apache 2.4 PCRE2-re való fordításával kapcsolatos tapasztalataimat, mivel még a PHP 7 is régóta támogatja a PCRE2 könyvtárat, de a nyílt forráskódú Apache Software Foundation még mindig nem.
Természetesen most valószínűleg a PCRE2 támogatású Apache kiadás előtt járok, mivel az Apache git forrásait használom, ami azt mondja, hogy a PCRE2 támogatás már a következő kiadásban lehetséges, de azoknak, akik már szeretnének PCRE2 támogatást Apache 2.4, és akik nem akarnak várni a kiadásra, megosztom az egyik módszert.
A cikk feltételezi, hogy az összes szükséges szoftvert a forráskódból, a szoftverek listájából és a verziók listájából gyűjti össze az írás idején:
PCRE2-10.33
APR 1.7.0
THM-ig 1.6.1
Apache httpd 2.4.41
Első lépés: PCRE2 összeállítása és fordítása
Hagyjuk ki a források hivatalos forrásból történő letöltésének pillanatát, mert ez túl nyilvánvaló, ezért kicsomagolta az archívumot, menjen a PCRE2 forrásokat tartalmazó mappába, és futtassa 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-unicode
Adja meg az elérési utat az előtagban, ha nem szeretné a szabványos helyet használni a könyvtár telepítéséhez:
--prefix=/ваш/путь/до библиотеки
Ellenkező esetben előtag nélkül gyűjt.
A fennmaradó parancsok a 8 bites, 16 bites és 32 bites PCRE kódblokkok támogatását jelzik, ebben a verzióban az összeszerelést ezekkel hajtották végre.
És természetesen ezt a dolgot a parancsok szekvenciális végrehajtásával fordítjuk:
make
make install
Ha minden rendben van, és a fordítás hiba nélkül ment, folytassa a következő lépéssel.
Második lépés: csatlakoztassa a PCRE2 könyvtárat az APR-hez
Mivel az Apache az APR-t használva fordítja le a forrásokat, magába az APR-be kell beillesztenünk a könyvtárat, különben az Apache forrásokban ismeretlen függvényekkel kapcsolatos hibák fordulhatnak elő, mert új PCRE2 függvényeket fogunk használni.
Hagyjuk ki a források hivatalos forrásból történő letöltésének pillanatát, mivel ez túl nyilvánvaló, ezért kicsomagolta az archívumot, és elvégezte az APR beállítását:
./configure --prefix=/etc/webserver/apr-170
Természetesen az előtagban adja meg az elérési utat, ha nem a szabványos helyet kívánja használni a könyvtár telepítéséhez, vagy ha nem adja meg:
--prefix=/ваш/путь/до библиотеки
A konfiguráció befejezése után lépjen a /etc/webserver/srcsrv/apr-1.7.0/build könyvtárba.
Vagy: /saját/útvonala/a könyvtárhoz/build
Keresse meg az apr_rules.mk fájlt ebben a könyvtárban, és adja hozzá a sorokat a végéhez, ahol:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl
A könyvtár csatlakoztatása:
-lpcre2-8 -L/ваш/путь/до библиотеки pcre2/lib
Mentse el, és lépjen az APR források gyökérkönyvtárába: /your/path/to the library.
Állítsuk össze módosított THM-ünket:
make
make install
Ha minden rendben van, és a fordítás hiba nélkül ment, folytassa a következő lépéssel.
Harmadik lépés: APR-util létrehozása az Apache számára forrásokból
Letöltötte ezt a könyvtárat a forrásból, lépjen a kicsomagolt archívum gyökérmappájába az APR-util segítségével, és írja be egymás után a következő parancsokat:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/ваш/путь/до библиотеки apr
make
make install
Természetesen az előtagban adja meg az elérési utat, ha nem a szabványos helyet kívánja használni a könyvtár telepítéséhez, vagy ha nem adja meg:
--prefix=/ваш/путь/до библиотеки
A THM-ünket is ide kapcsoljuk:
--with-apr=/ваш/путь/до библиотеки apr
Negyedik lépés: töltsön le forrásokat az Apache git-ből a PCRE2 támogatásához
Fontos: A forrásokat a git legújabb kiadásából töltjük le.
Két forrást kell letöltenünk, például az ap_regex.h-t és az util_pcre.c-t, az alábbi linkek:
Most lépjen az Apache httpd forráskönyvtárába, és építse fel az Apache-t a következő parancsokkal:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/ваш/путь/до библиотеки apr --with-apr-util=/ваш/путь/до библиотеки apr-util --with-pcre=/ваш/путь/до библиотеки pcre2/bin/pcre2-config
Természetesen az előtagban adja meg az elérési utat, ha nem a szabványos helyet kívánja használni a könyvtár telepítéséhez, vagy ha nem adja meg:
--prefix=/ваш/путь/до Apache httpd
Saját belátása szerint további parancsokat is megadhat az Apache felépítéséhez, a modulok és könyvtárak engedélyezésére vagy letiltására.
Ezután megyünk az Apache httpd forráskönyvtárunkba, ez van nálam:
/etc/webserver/srcsrv/httpd-2.4.41
Természetesen belép a könyvtárába, és lecseréli a könyvtárban:
/etc/webserver/srcsrv/httpd-2.4.41/include
Az ap_regex.h fájl, amelyet az Apache git-ből töltöttünk le.
Bemegyünk a könyvtárba is:
/etc/webserver/srcsrv/httpd-2.4.41/server
Az util_pcre.c fájlt lecseréljük az Apache git-ből letöltött fájlra
Most már csak a PCRE2 kapcsolat hozzáadása az Apache-ban van hátra, meg kell találnia az ap_config_auto.h fájlt, amely a könyvtárban található:
/etc/webserver/srcsrv/httpd-2.4.41/include
A fájl legelejére illessze be a következő sorokat:
/* Load PCRE2 */
#define HAVE_PCRE2 1
Nos, most készen állunk az Apache httpd PCRE2 támogatással történő fordításának igazi pillanatára.
Menjünk az Apache httpd forráskönyvtárunkba, és fordítsuk le ezt a parancsok szekvenciális végrehajtásával:
make
make install
Most, ha minden jól és hibamentesen ment, akkor össze kell állítani és lefordítani az Apache httpd-t PCRE2 támogatással, ami pozitív változásokat jelent a PCRE reguláris kifejezéseket használó Apache modulokban, ezek egyike a Module rewrite.
Összefoglalva, 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 egy PCRE2 támogatással rendelkező verzió.
Valamint a szabványos .htaccess tesztelése során nem történt hiba, ha valakinek hibája van, írja meg kommentben.
PS
Kicsit megzavart a helyzet, amikor a PCRE két különböző verzióját használom a veremhez, és úgy döntöttem, hogy kijavítom.
Forrás: will.com