Em muitos casos, o método vinculado de atualização de uma biblioteca funciona (sujeito a pisar em todos os sentimentos dos gerenciadores de pacotes, embora você também corra o risco de criar mais problemas do que resolver se não estiver familiarizado com a criação de pacotes) .
O PHP vem com sua própria cópia do PCRE, então você pode estar rodando uma versão antiga do PHP (improvável, já que o mesmo php-5.4 foi empacotado com o pcre-8.37). Nesse caso, substituir um sistema PCRE não teria efeito, mas a saída ldd
confirma que você está usando o sistema PCRE.
Você está usando um sistema antigo PCRE (a AMI é derivada de RHEL, as bibliotecas são atualizadas somente nas versões principais). O problema é que o PCRE v8.30 introduziu algumas alterações na API , e isso acionou uma atualização na versão da biblioteca ( conforme a convenção como uma função da API pcre_info()
foi removida) . Para < 8.30 a biblioteca será chamada libpcre.so.0
e para ≥ v8.30 será libpcre.so.1
.
$ diff -u pcre-8.21/libpcre.la pcre-8.30/libpcre.la
[...]
# The name that we can dlopen(3).
-dlname='libpcre.so.0'
+dlname='libpcre.so.1'
# Names of this library.
-library_names='libpcre.so.0.0.1 libpcre.so.0 libpcre.so'
+library_names='libpcre.so.1.0.0 libpcre.so.1 libpcre.so'
Você pode confirmar isso no registro de instalação que você colou.
Supondo que você esteja usando o sistema PHP, ele teria sido compilado e vinculado à versão do sistema libpcre.so.0
, então você está correto em saber que a vinculação é o problema, mas é a vinculação do PHP. Ele nunca usará o libpcre.so.1
que você instalou. (Se você pesquisar bastante, você encontrará pessoas defendendo alguns truques de links simbólicos para contornar o problema, eu não recomendo isso, a API mudou e a versão mudou por um motivo .)
No exemplo, o link para o autor foi atualizado de 8.31 para 8.33, portanto, nenhum problema foi encontrado.
Suas escolhas mais simples são verificar se há pacotes PHP mais recentes disponíveis que usam um PCRE mais recente; ou atualize sua versão AMI. (Uma opção menos simples é construir seu próprio PHP, geralmente não recomendado, e incluído aqui apenas para ser completo. Comece com os detalhes de configure
na saída de phpinfo()
e certifique-se de omitir o opção --with-pcre-regex=/usr
ou similar, para preferir o pacote PCRE mais atualizado. Esteja preparado para instalar lotes de pacotes dev ...)