Função não definida Illuminate\Encryption\openssl_cipher_iv_length()

Quando você atualiza o PHP para versões acima de ‘7.2’ e o Apache 2.4.39 VC15 no Windows 10, você recebe a mensagem de erro ao tentar executar um projeto do Laravel, informando Função não definida: Call to undefined function Illuminate\Encryption\openssl_cipher_iv_length().

Observação: Quero lembrar que, tudo isso ocorreu no Windows 10 e inclusive, este é o foco desse artigo. Porém, caso ocorra algo semelhante em outras plataformas baseadas em UNIX, você poderá verificar se o OpenSSL está ativado.

Ocorrências do Problema

Primeiramente, lutei contra esse problema no Windows 10 com o Apache ‘2.4.39 VC15’, ao atualizar o PHP da versão PHP 5.6 para o 7.2. Depois, novamente em outra instalação do Windows, quando tentei atualizar o Apache ‘2.4’ para a versão ‘2.4.39 VC15’ com o PHP ‘7.2’. E por fim, em uma instalação nova do Windows, quando tentei instalar o Apache 2.4.39 VC15 com o PHP ‘7.3.6’. No entanto, ao pesquisar no Google, descobri que muitos usuários, especialmente aqueles no Windows com o Apache 2.4 instalado diretamente ou via Wamp, também enfrentaram o mesmo problema. Com isso, Quando atualizaram de versões como 5.x, 7.0 ou 7.1 para 7.2 ou 7.3 e executaram seus códigos, a tela exibida era semelhante a esta.

Mensagem de erro Laravel 7.3.6 e Apache 2.4.39 VC15
Mensagem de erro Laravel 7.3.6 e Apache 2.4.39 VC15

Quando verifiquei as instalações do php com o comando php -i, descobri que o OpenSSL não estava ativado. Por isso, primeiro tentei editar o arquivo 'php.ini‘, descomentando a linha para ativar a extensão open_ssl. Mas, isso não resolveu o problema.

Então, para resolver o problema, primeiro instalei o Apache 2.4.39 VC14, que ainda continha os arquivos ssleay32.dll e libeay32.dll. Entretanto, até o momento em que escrevia este artigo, não havia uma versão superior à 2.4.39 VC15 que contivesse esses arquivos. Além disso, a atualização mais recente do PHP (7.3.6) também não incluía.

Observação: Todas as minhas tentativas de correção do problema, foram no sistema Windows 10 x64. Não fiz testes no sistema x86. Mas, como estamos falando de Windows, acredito que você pode tentar aplicar a mesma solução em um sistema x86. Além disso, vale dizer que alguns usuários de Windows 10 x86 também estavam lutando contra esse problema.

Solução

A simples cópia desses arquivos foi a solução para alguns usuários. Mas, eu precisei analisar logs do Apache e observar os vários avisos (Warnings), referente a módulos não encontrados, incluisive o 'open_ssl'. Finalmente, quando editei o arquivo ‘php.ini‘, e ajustei cada linha de configuração das extensões com o caminho absoluto, foi possivel revolver o problema. Observe abaixo:

extension=c:/php-7.3.6/ext/php_openssl.dll

Neste caso, o executável do PHP estava no diretório “c:\php-7.3.6” e o arquivo php_openssl.dll no subdiretório “ext”. Vale lembrar mais uma vez que, foi necessário ajustar a configuração do caminho de todas as extensões do PHP dessa mesma maneira.

Usei a versão do Apache 2.4.39 VC14, disponível nesse link: https://www.apachelounge.com/download/.Além disso, utilizei o PHP 7.3.6 VC15 x64 Thread Safe, que você pode baixar aqui: https://windows.php.net/download#php-7.3.

Requisitos Necessários

Dessa maneira, corrigi o problema e voltei a executar os códigos construídos com Laravel 5.x.

[]’s

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima