Quero compartilhar minha experiência na tradução do Apache 2.4 para PCRE2, uma vez que até o PHP 7 já suporta a biblioteca PCRE2 há bastante tempo, enquanto a open source Apache Software Foundation ainda não o fez.
Claro, agora provavelmente estou antecipando o lançamento do Apache com suporte ao PCRE2, já que estou usando os fontes do git do Apache, o que indica que o suporte ao PCRE2 pode já estar na próxima versão. Mas para aqueles que desejam suporte ao PCRE2 no Apache 2.4 agora e não querem esperar pelo lançamento, compartilho um dos métodos.
Este artigo presume que você está compilando todo o software necessário a partir do código-fonte. A lista de software e versões no momento da redação do artigo:
PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41
Passo um: compilar e instalar o PCRE2
Vamos pular a parte de baixar os fontes dos sites oficiais, pois isso é muito óbvio. Assim, você descompactou o arquivo, acessa a pasta com os fontes do PCRE2 e executa o seguinte comando para suporte a UTF:
.\/configure --prefix=\/etc\/webserver\/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicodeNo prefixo, você indica seu caminho se não quiser usar o local padrão para a instalação da biblioteca:
--prefix=\/seu\/caminho\/até a bibliotecaCaso contrário, compile sem prefixo.
Os demais comandos especificam a inclusão de suporte aos blocos de código PCRE de 8, 16 e 32 bits, nesta variante, a compilação foi realizada com eles.
E, é claro, compilamos isso com a execução sequencial dos comandos:
make
make install Se tudo estiver normal e a compilação foi feita sem erros, passamos para o próximo passo.
Passo dois: conectar a biblioteca PCRE2 no APR
Como o Apache compila os fontes usando o APR, precisamos conectar a biblioteca no próprio APR, caso contrário, podem ocorrer erros de funções desconhecidas nos fontes do Apache, pois usaremos novas funções do PCRE2.
Vamos pular a parte de baixar os fontes dos sites oficiais, já que isso é muito óbvio. Assim, você descompactou o arquivo e executou a configuração do APR:
.\/configure --prefix=\/etc\/webserver\/apr-170Naturalmente, no prefixo, você indica seu caminho se não quiser usar o local padrão para a instalação da biblioteca ou não indicar:
--prefix=\/seu\/caminho\/até a bibliotecaApós a configuração, vá para o diretório: \/etc\/webserver\/srcsrv\/apr-1.7.0\/build
Ou: \/seu\/caminho\/até a biblioteca\/build
Encontre o arquivo apr_rules.mk nesse diretório e adicione ao final da linha onde:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldlConectando a biblioteca:
-lpcre2-8 -L\/seu\/caminho\/até a biblioteca pcre2\/libEstamos indo para o diretório raiz dos fontes do APR: /seu/caminho/para a biblioteca.
Compilamos nosso APR modificado:
make
make installSe tudo estiver normal e a compilação foi feita sem erros, passamos para o próximo passo.
Passo três: compilar os fontes do APR-util para o Apache
Você baixou esta biblioteca da fonte oficial, vá para a pasta raiz do arquivo descompactado com o APR-util e insira os seguintes comandos, um por um:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/seu/caminho/para a biblioteca apr
make
make installNaturalmente, no prefixo, você indica seu caminho se não quiser usar o local padrão para a instalação da biblioteca ou não indicar:
--prefix=\/seu\/caminho\/até a bibliotecaAqui também conectamos nosso APR:
--with-apr=/seu/caminho/para a biblioteca aprPasso quatro: baixamos os fontes do git do Apache para suporte ao PCRE2
Importante: Baixamos os fontes da versão mais recente do git.
Precisamos baixar dois arquivos fontes, como ap_regex.h e util_pcre.c, links abaixo:
Agora vamos para o seu diretório de fontes do Apache httpd e compilamos o Apache com os seguintes comandos:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/seu/caminho/para a biblioteca apr --with-apr-util=/seu/caminho/para a biblioteca apr-util --with-pcre=/seu/caminho/para a biblioteca pcre2/bin/pcre2-configNaturalmente, no prefixo, você indica seu caminho se não quiser usar o local padrão para a instalação da biblioteca ou não indicar:
--prefix=/seu/caminho/para Apache httpdAlém disso, comandos adicionais para a construção do Apache podem ser indicados conforme sua preferência, referindo-se a comandos para ativar ou desativar módulos e bibliotecas.
Em seguida, vá para o seu diretório de fontes do Apache httpd, no meu caso é:
/etc/webserver/srcsrv/httpd-2.4.41Você naturalmente acessa seu diretório, substituindo no diretório:
/etc/webserver/srcsrv/httpd-2.4.41/includeO arquivo ap_regex.h, pelo que baixamos do git do Apache.
Também vamos para o diretório:
/etc/webserver/srcsrv/httpd-2.4.41/serverSubstituímos o arquivo util_pcre.c, pelo que baixamos do git do Apache.
Agora falta adicionar a conexão do PCRE2 ao próprio Apache, é necessário encontrar o arquivo ap_config_auto.h, que está no diretório:
/etc/webserver/srcsrv/httpd-2.4.41/includeNo começo deste arquivo, insira as seguintes linhas:
/* Load PCRE2 */
#define HAVE_PCRE2 1 Agora estamos prontos para o verdadeiro momento da compilação do Apache httpd com suporte ao PCRE2.
Vamos para o seu diretório de fontes do Apache httpd e compilamos isso executando os comandos sequencialmente:
make
make installAgora, se tudo correu bem e sem erros, você terá um Apache httpd compilado com suporte ao PCRE2, o que significa melhorias positivas nos módulos do Apache que utilizam expressões regulares PCRE, um deles é o módulo rewrite.
Em conclusão, este método permite o uso do PCRE2 antes do lançamento oficial pela Apache Software Foundation, espero que em breve a versão com suporte ao PCRE2 seja lançada.
Além disso, durante os testes dos .htaccess padrão, não ocorreram erros, se alguém encontrar erros, escreva nos comentários.
P.S.
A situação de usar duas versões diferentes do PCRE me deixou um pouco preocupado, então decidi corrigir isso.
Fonte: habr.com
