Ман мехоҳам таҷрибаи худро дар бораи тарҷумаи Apache 2.4 ба PCRE2 мубодила кунам, зеро ҳатто PHP 7 муддати тӯлонӣ китобхонаи PCRE2-ро дастгирӣ мекунад, аммо манбаи кушодаи Apache Software Foundation то ҳол дастгирӣ намекунад.
Албатта, ман ҳоло эҳтимолан пеш аз нашри Apache бо дастгирии PCRE2 ҳастам, зеро ман манбаъҳои Apache git-ро истифода мебарам, ки ба мо мегӯяд, ки дастгирии PCRE2 аллакай дар нашри оянда имконпазир аст, аммо барои онҳое, ки аллакай дастгирии PCRE2-ро дар Apache 2.4, ва онҳое, ки намехоҳанд, ки озодшавиро интизор шаванд, ман яке аз роҳҳоро мубодила мекунам.
Мақола тахмин мекунад, ки шумо тамоми нармафзори заруриро аз рамзи сарчашма, рӯйхати нармафзор ва версияҳо ҳангоми навиштан ҷамъоварӣ мекунед:
PCRE2-10.33
АПР 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41
Қадами якум: PCRE2 сохта ва тартиб диҳед
Биёед лаҳзаи зеркашии манбаъҳоро аз манбаъҳои расмӣ сарфи назар кунем, зеро ин хеле возеҳ аст, бинобар ин шумо бойгониро кушодаед, ба ҷузвдон бо манбаъҳои PCRE2 гузаред ва фармони зеринро иҷро кунед, то UTF-ро дастгирӣ кунед:
./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicode
Роҳи худро дар префикс муайян кунед, агар шумо намехоҳед макони стандартиро барои насб кардани китобхона истифода баред:
--prefix=/ваш/путь/до библиотеки
Дар акси ҳол, шумо бе префикс ҷамъ мекунед.
Фармонҳои боқимонда дохил кардани дастгириҳо барои блокҳои коди PCRE 8-бит, 16-бит ва 32-битро нишон медиҳанд, дар ин версия васлкунӣ бо онҳо анҷом дода шудааст.
Ва албатта, мо ин чизро бо истифода аз иҷрои пайдарпайи фармонҳо тартиб медиҳем:
make
make install
Агар ҳама чиз хуб бошад ва тартибдиҳӣ бе хатогӣ анҷом дода шавад, ба қадами оянда гузаред.
Қадами дуюм: китобхонаи PCRE2-ро ба APR пайваст кунед
Азбаски Apache манбаъҳоро бо истифода аз APR тартиб медиҳад, мо бояд китобхонаро ба худи APR дохил кунем, вагарна дар бораи функсияҳои номаълум дар манбаъҳои Apache хатогиҳо ҷой дошта метавонанд, зеро мо функсияҳои нави PCRE2-ро истифода хоҳем бурд.
Биёед лаҳзаи зеркашии манбаъҳоро аз манбаъҳои расмӣ сарфи назар кунем, зеро ин хеле возеҳ аст, аз ин рӯ шумо архивро кушода ва конфигуратсияи APR-ро иҷро кардед:
./configure --prefix=/etc/webserver/apr-170
Табиист, ки шумо роҳи худро дар префикс нишон медиҳед, агар шумо намехоҳед, ки макони стандартиро барои насб кардани китобхона истифода баред, ё агар шумо нишон надиҳед:
--prefix=/ваш/путь/до библиотеки
Пас аз ба итмом расонидани конфигуратсия, ба директория гузаред: /etc/webserver/srcsrv/apr-1.7.0/build
Ё: /шумо/роҳ/ба китобхона/сохт
Дар ин директория файли apr_rules.mk -ро ёбед ва сатрҳоро дар охири он илова кунед:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl
Пайваст кардани китобхона:
-lpcre2-8 -L/ваш/путь/до библиотеки pcre2/lib
Захира кунед ва ба феҳристи решаи манбаъҳои APR гузаред: /your/path/to китобхона.
Биёед APR тағирёфтаи худро тартиб диҳем:
make
make install
Агар ҳама чиз хуб бошад ва тартибдиҳӣ бе хатогӣ анҷом дода шавад, ба қадами оянда гузаред.
Қадами сеюм: APR-util барои Apache аз манбаъҳо созед
Шумо ин китобхонаро аз манбаъ зеркашӣ кардаед, ба папкаи решаи бойгонии кушодашуда бо APR-util гузаред ва фармонҳои зеринро пайдарпай ворид кунед:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/ваш/путь/до библиотеки apr
make
make install
Табиист, ки шумо роҳи худро дар префикс нишон медиҳед, агар шумо намехоҳед, ки макони стандартиро барои насб кардани китобхона истифода баред, ё агар шумо нишон надиҳед:
--prefix=/ваш/путь/до библиотеки
Мо инчунин APR-и худро дар ин ҷо пайваст мекунем:
--with-apr=/ваш/путь/до библиотеки apr
Қадами чорум: зеркашӣ кардани манбаъҳо аз Apache git барои дастгирии PCRE2
Муҳим: Мо сарчашмаҳоро аз нашри охирини git зеркашӣ мекунем.
Мо бояд ду манбаъро ба мисли ap_regex.h ва util_pcre.c зеркашӣ кунем, истиноди зер:
Акнун ба директорияи манбаи Apache httpd равед ва Apache-ро бо фармонҳои зерин созед:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/ваш/путь/до библиотеки apr --with-apr-util=/ваш/путь/до библиотеки apr-util --with-pcre=/ваш/путь/до библиотеки pcre2/bin/pcre2-config
Табиист, ки шумо роҳи худро дар префикс нишон медиҳед, агар шумо намехоҳед, ки макони стандартиро барои насб кардани китобхона истифода баред, ё агар шумо нишон надиҳед:
--prefix=/ваш/путь/до Apache httpd
Шумо инчунин метавонед фармонҳои иловагиро барои сохтани Apache бо ихтиёри худ таъин кунед, ман дар назар дорам фармонҳо барои фаъол ё ғайрифаъол кардани модулҳо ва китобхонаҳо.
Баъдан мо ба феҳристи сарчашмаи httpd Apache меравем, ман инро дорам:
/etc/webserver/srcsrv/httpd-2.4.41
Шумо табиатан ба феҳристи худ меравед, дар феҳрист иваз кунед:
/etc/webserver/srcsrv/httpd-2.4.41/include
Файли ap_regex.h, ки мо онро аз Apache git бор кардаем.
Мо инчунин ба директория меравем:
/etc/webserver/srcsrv/httpd-2.4.41/server
Мо файли util_pcre.c-ро бо файле, ки аз Apache git бор карда будем, иваз мекунем
Ҳоло танҳо ин аст, ки пайвасти PCRE2-ро дар худи Apache илова кунед, шумо бояд файли ap_config_auto.h-ро пайдо кунед, он дар директория ҷойгир аст:
/etc/webserver/srcsrv/httpd-2.4.41/include
Дар ибтидои ин файл сатрҳои зеринро гузоред:
/* Load PCRE2 */
#define HAVE_PCRE2 1
Хуб, ҳоло мо ба лаҳзаи воқеии тартиб додани Apache httpd бо дастгирии PCRE2 омодаем.
Биёед ба директорияи сарчашмаи Apache httpd равем ва онро бо иҷрои пайдарпайи фармонҳо тартиб диҳем:
make
make install
Акнун, агар ҳама чиз хуб ва бе хатогӣ анҷом дода шавад, пас шумо Apache httpd-ро бо дастгирии PCRE2 ҷамъоварӣ ва мураттаб кардаед, ки маънои тағироти мусбӣ дар модулҳои Apache, ки ифодаҳои муқаррарии PCRE-ро истифода мебаранд, яке аз онҳо азнавнависии модул мебошад.
Хулоса, ин усул имкон медиҳад, ки PCRE2 пеш аз нашри расмии Фонди нармафзори Apache истифода шавад, ман умедворам, ки версияи PCRE2 ба зудӣ бароварда мешавад.
Инчунин, ҳангоми санҷиши стандарти .htaccess ягон хатогӣ рух надодааст, агар касе хатое дошта бошад, дар шарҳҳо нависед.
PS
Ман аз вазъияти истифодаи ду версияи гуногуни PCRE барои стекам каме ошуфта шудам ва ман қарор додам, ки онро ислоҳ кунам.
Манбаъ: will.com