我想分享一下将Apache 2.4转换为PCRE2的经验,因为即使PHP 7早就支持PCRE2库,而且开源Apache Software Foundation仍然不存在。
当然,由于我使用的是来自Apache geo的资源,因此我现在可能提前发布了具有PCRE2支持的Apache,这告诉我们有关下一个版本中已经支持PCRE2的信息,但是对于那些已经希望在Apache 2.4中支持PCRE2的人,以及不想等待的人发布共享的方式之一。
本文假定您在撰写本文时从源中收集了所有必要的软件,软件列表和版本:
PCRE2-10.33
年利率1.7.0
APR实用程序1.6.1
阿帕奇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=///
否则,请不加前缀收集。
其余命令指示包括支持的8位,16位和32位代码块PCRE,在此实施例中,使用它们进行组装。
当然,我们使用命令的顺序执行来编译这种情况:
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 /到库。
编译修改后的APR:
make make install
如果所有规则和编译都顺利进行,请转到下一步。
第三步:从源代码构建Apache的APR-util
您是从来源办公室下载该库的,并使用APR-util转到解压缩档案的根文件夹,然后依次输入以下命令:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/// apr make make install
当然,如果您不想使用标准位置来安装库,请在前缀中指出路径,或者不指定:
--prefix=///
同样在这里,我们连接我们的APR:
--with-apr=/// apr
第四步:从Apache Git下载源以支持PCRE2
重要:从最新版本的gita下载源。
我们需要下载两个资源,例如ap_regex.h和util_pcre.c,以下链接:
ap_regex.hutil_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,这是指用于禁用模块和库的命令。
接下来,转到您的Apache httpd源目录,我有这个目录:
/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
现在仍然需要在Apache本身中添加PCRE2连接,您需要找到ap_config_auto.h文件,该文件位于目录中:
/etc/webserver/srcsrv/httpd-2.4.41/include
在此文件的开头,插入以下行:
#define HAVE_PCRE2 1
好了,现在我们已经准备好使用PCRE2支持编译Apache httpd了。
我们转到我们的Apache httpd源目录,使用顺序执行的命令来编译这种情况:
make make install
现在,如果一切顺利并且没有错误,那么您将使用PCRE2支持组装并编译Apache httpd,这意味着使用PCRE正则表达式对Apache模块进行了积极的改进,其中之一就是模块重写。
总而言之,这种方法使在Apache Software Foundation发布之前可以使用PCRE2,我希望不久将发布支持PCRE2的版本。
另外,在标准.htaccess的测试过程中,如果任何人在注释中写入错误,都不会发生错误。
聚苯乙烯
对于在堆栈中使用两个不同版本的PCRE的情况,我感到有些不安,因此我决定对其进行修复。