Quero compartilhar minha experiência na tradução do Apache 2.4 para o PCRE2, já que até o PHP 7 oferece suporte à biblioteca PCRE2 e a Apache Software Foundation de código aberto ainda não está lá.
É claro que provavelmente estou à frente do lançamento do Apache com suporte ao PCRE2 agora, já que uso as fontes da área geográfica do Apache, que nos informa sobre o suporte ao PCRE2 já é possível no próximo lançamento, mas para quem já deseja suporte para o PCRE2 no Apache 2.4 e não quer esperar liberação compartilhando uma das maneiras.
O artigo pressupõe que você colete todo o software necessário a partir da fonte, uma lista de software e versões no momento da redação deste documento:
PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41Etapa 1: criar e compilar o PCRE2
Omitiremos o momento de baixar a fonte das fontes, pois é muito óbvio. Assim, você descompactou o arquivo morto, foi para a pasta com a fonte PCRE2 e executou o seguinte comando para oferecer suporte à UTF:
./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicode
No prefixo, especifique seu caminho se não desejar usar o local padrão para instalar a biblioteca:
--prefix=///
Caso contrário, colete sem um prefixo.
Os comandos restantes indicam a inclusão de blocos de código PCRE de 8, 16 e 32 bits, nesta modalidade, a montagem foi realizada com eles.
E, é claro, compilamos esse caso usando a execução sequencial de comandos:
make make install
Se todas as regras e compilação ocorrerem sem problemas, vá para a próxima etapa.
Etapa 2: conectar a biblioteca PCRE2 ao APR
Como o Apache compila as fontes usando APR, precisamos conectar a biblioteca na própria APR, caso contrário, pode haver erros sobre funções desconhecidas nas fontes Apache, porque usaremos as novas funções PCRE2.
Omitiremos o momento de baixar a fonte das fontes, pois é muito óbvio. Assim, você desempacotou o arquivo e configurou o APR:
./configure --prefix=/etc/webserver/apr-170
Naturalmente, indique seu caminho no prefixo se você não quiser usar o local padrão para instalar a biblioteca ou não especificar:
--prefix=///
Após concluir a configuração, acesse o diretório: /etc/webserver/srcsrv/apr-1.7.0/build
Bem, ou: / your / path / para a biblioteca / build
Localize o arquivo apr_rules.mk neste diretório e adicione no final da linha onde:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl
Conexão de biblioteca:
-lpcre2-8 -L/// pcre2/lib
Salve, vá para o diretório raiz das fontes APR: / your / path / para a biblioteca.
Compile nosso APR modificado:
make make install
Se todas as regras e compilação ocorrerem sem problemas, vá para a próxima etapa.
Etapa 3: Criar APR-util para Apache a partir da fonte
Você baixou esta biblioteca do escritório de origem, acesse a pasta raiz do arquivo descompactado com APR-util e insira os seguintes comandos em sequência:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/// apr make make install
Naturalmente, indique seu caminho no prefixo se você não quiser usar o local padrão para instalar a biblioteca ou não especificar:
--prefix=///
Também aqui conectamos nosso APR:
--with-apr=/// apr
Etapa 4: Baixar fontes do Apache Git para oferecer suporte ao PCRE2
Importante: Baixe o código-fonte da versão mais recente do gita.
Precisamos baixar duas fontes, como ap_regex.h e util_pcre.c, nos links abaixo:
ap_regex.hutil_pcre.cAgora vamos ao nosso diretório de origem httpd do Apache e construímos o Apache com os seguintes comandos:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/// apr --with-apr-util=/// apr-util --with-pcre=/// pcre2/bin/pcre2-config
Naturalmente, indique seu caminho no prefixo se você não quiser usar o local padrão para instalar a biblioteca ou não especificar:
--prefix=/// Apache httpd
Além disso, especifique comandos adicionais para a construção do Apache a seu critério, quero dizer os comandos para ativar a desativação de módulos e bibliotecas.
Em seguida, vá para o diretório de origem httpd do Apache, tenho o seguinte:
/etc/webserver/srcsrv/httpd-2.4.41
Você naturalmente vai para o seu diretório, substitua no diretório:
/etc/webserver/srcsrv/httpd-2.4.41/include
O arquivo ap_regex.h, que baixamos do Apache git.
Acesse também o diretório:
/etc/webserver/srcsrv/httpd-2.4.41/server
Substitua o arquivo util_pcre.c pelo Apache que baixamos de
Agora resta adicionar a conexão PCRE2 no próprio Apache; você precisa encontrar o arquivo ap_config_auto.h, localizado no diretório:
/etc/webserver/srcsrv/httpd-2.4.41/include
No início deste arquivo, insira as seguintes linhas:
#define HAVE_PCRE2 1
Bem, agora estamos prontos para o verdadeiro momento de compilar o Apache httpd com suporte para PCRE2.
Vamos ao nosso diretório de origem httpd Apache, compilamos este caso usando a execução sequencial de comandos:
make make install
Agora, se tudo correu bem e sem erros, você terá montado e compilado o Apache httpd com suporte ao PCRE2, o que significa mudanças positivas nos módulos do Apache usando expressões regulares do PCRE, uma das quais é a reescrita do módulo.
Concluindo, esse método possibilita o uso do PCRE2 antes do lançamento da Apache Software Foundation. Espero que uma versão com suporte ao PCRE2 seja lançada em breve.
Além disso, durante o teste do .htaccess padrão, nenhum erro ocorreu, se alguém tiver erros, escreva nos comentários.
PS
Fiquei um pouco incomodado com a situação de usar duas versões diferentes do PCRE para minha pilha e decidi corrigi-lo.