Chci se podělit o svou zkušenost s přechodem z Apache 2.4 na PCRE2, protože i PHP 7 již dlouho podporuje knihovnu PCRE2, zatímco open source Apache Software Foundation to ještě neudělala.
Samozřejmě nyní pravděpodobně předbíhám vydání Apache s podporou PCRE2, protože používám zdrojové kódy z Gitu Apache, což naznačuje, že podpora PCRE2 by mohla být již v příštím vydání, ale pro ty, kteří již nyní chtějí podporu PCRE2 v Apache 2.4 a nechtějí čekat na vydání, sdílím jeden ze způsobů.
Článek předpokládá, že shromažďujete veškerý potřebný software ze zdrojových kódů, seznam softwaru a verzí v době psaní článku:
PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41
Krok první: shromažďujeme a kompilujeme PCRE2
Přeskočíme okamžik stahování zdrojů z oficiálních stránek, protože to je příliš zřejmé, takže jste rozbalili archiv, přejdeme do složky se zdrojovými kódy PCRE2 a provedeme následující příkaz pro podporu UTF:
.\/configure --prefix=\/etc\/webserver\/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicodeV prefixu uveďte svou cestu, pokud nechcete používat standardní umístění pro instalaci knihovny:
--prefix=\/vaše\/cesta\/k knihovněJinak kompilujete bez prefixu.
Ostatní příkazy specifikují zahrnutí podpory pro 8bitové, 16bitové a 32bitové bloky kódu PCRE, v tomto případě byla kompilace provedena s nimi.
A samozřejmě kompilujeme to pomocí sekvenčního provádění příkazů:
make
make install Pokud je vše v pořádku a kompilace proběhla bez chyb, přecházíme k dalšímu kroku.
Krok druhý: připojujeme knihovnu PCRE2 do APR
Jelikož Apache kompiluje zdrojové kódy pomocí APR, potřebujeme knihovnu připojit přímo v APR, jinak mohou nastat chyby s neznámými funkcemi ve zdrojových kódech Apache, protože budeme používat nové funkce PCRE2.
Přeskočíme okamžik stahování zdrojů z oficiálních stránek, protože to je příliš zřejmé, takže jste rozbalili archiv a provedli konfiguraci APR:
.\/configure --prefix=\/etc\/webserver\/apr-170Samozřejmě u prefixu uveďte svou cestu, pokud nechcete používat standardní umístění pro instalaci knihovny, nebo ji neuveďte:
--prefix=\/vaše\/cesta\/k knihovněPo dokončení konfigurace přejděte do adresáře: \/etc\/webserver\/srcsrv\/apr-1.7.0\/build
Nebo: \/vaše\/cesta\/k knihovně\/build
Najděte soubor apr_rules.mk v tomto adresáři a na jeho konec přidejte řádek, kde:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldlPřipojení knihovny:
-lpcre2-8 -L\/vaše\/cesta\/k knihovně pcre2\/libUkládáme se do kořenového adresáře zdrojů APR: /vaše/cesta/k knihovně.
Kompilujeme náš upravený APR:
make
make installPokud je vše v pořádku a kompilace proběhla bez chyb, přecházíme k dalšímu kroku.
Krok tři: shromažďujeme zdroje APR-util pro Apache
Stáhli jste tuto knihovnu z oficiálního zdroje, přejděte do kořenového adresáře rozbaleného archivu s APR-util a zadáme postupně následující příkazy:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/vaše/cesta/k knihovně apr
make
make installSamozřejmě u prefixu uveďte svou cestu, pokud nechcete používat standardní umístění pro instalaci knihovny, nebo ji neuveďte:
--prefix=\/vaše\/cesta\/k knihovněTaké zde připojujeme náš APR:
--with-apr=/vaše/cesta/k knihovně aprKrok čtyři: stahujeme zdroje z gitu Apache pro podporu PCRE2
Důležité: Zdroje stahujeme z gitu nejnovější verze.
Musíme stáhnout dva zdroje jako ap_regex.h a util_pcre.c, odkazy níže:
Nyní přejdeme do svého adresáře zdrojů Apache httpd a sestavíme Apache pomocí následujících příkazů:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/vaše/cesta/k knihovně apr --with-apr-util=/vaše/cesta/k knihovně apr-util --with-pcre=/vaše/cesta/k knihovně pcre2/bin/pcre2-configSamozřejmě u prefixu uveďte svou cestu, pokud nechcete používat standardní umístění pro instalaci knihovny, nebo ji neuveďte:
--prefix=/vaše/cesta/k Apache httpdDalší příkazy pro sestavení Apache uvádějte podle vlastního uvážení, myslím tím příkazy pro zapnutí či vypnutí modulů a knihoven.
Dále přejdeme do svého adresáře zdrojů Apache httpd, u mě je to:
/etc/webserver/srcsrv/httpd-2.4.41Samozřejmě se přechází do vašeho adresáře, měníme v adresáři:
/etc/webserver/srcsrv/httpd-2.4.41/includeSoubor ap_regex.h na ten, který jsme stáhli z gitu Apache.
Také přejdeme do adresáře:
/etc/webserver/srcsrv/httpd-2.4.41/serverNahraďte soubor util_pcre.c tím, který jsme stáhli z gitu Apache.
Nyní zbývá přidat připojení PCRE2 přímo v Apache, je třeba najít soubor ap_config_auto.h, který se nachází v adresáři:
/etc/webserver/srcsrv/httpd-2.4.41/includeNa začátku tohoto souboru vložte následující řádky:
/* Load PCRE2 */
#define HAVE_PCRE2 1 Tak a nyní jsme připraveni na skutečný okamžik kompilace Apache httpd s podporou PCRE2.
Přejdeme do svého adresáře zdrojů Apache httpd a zkompilujeme to tímto způsobem pomocí postupného provádění příkazů:
make
make installPokud všechno proběhlo dobře a bez chyb, měli byste mít zkompilovaný Apache httpd s podporou PCRE2, což znamená pozitivní změny v modulech Apache používajících regulární výrazy PCRE, jedním z nich je Modul přepisování.
Na závěr, tento způsob umožňuje používat PCRE2 až do oficiálního vydání od Apache Software Foundation, doufám, že brzy vyjde verze s podporou PCRE2.
Také během testování standardních .htaccess se nevyskytly žádné chyby, pokud někdo narazí na chyby, pište do komentářů.
P.S.
Měl jsem obavy z používání dvou různých verzí PCRE ve svém stacku, a tak jsem se rozhodl to opravit.
Zdroj: habr.com
