Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

the requested PHP extension mcrypt is missing from your system

Boa tarde.

Eu uso o ApacheFriends XAMPP Version 7.2.2 no sitema operacional Windows 10, 64 bits.

Ao criar o projeto usando o código "laravel new estoque", a pasta com todos os pacotes foi criada sem nenhum erro. Mas este comando instala a ultima versão do Laravel, e o curso aconselha utilizar a versão 5.0, por questões de compatibilidade com o conteúdo. Portanto apaguei o projeto criado anteriormente sem chegar a testá-lo, e executei o comando abaixo conforme as instruções para instalar a versão 5.0:

composer create-project laravel/laravel estoque "5.0."

Desta vez o projeto não foi criado, aparentemente por falta de uma extensão chamada "mcrypt". A extensão não existe no meu php.ini, e simplesmente colocá-la lá sem mais nem menos acarreta erro de extensão não localizada. Até o momento não consegui encontrar uma solução na web de como instalar/habilitar esta extensão para o Windows. Ou dizem que já devia estar lá (o que não está) ou que não é mais usada, deprecated. De resto, só soluções para Linux ou Mac.

Alguem poderia me ajudar?

Segue abaixo a mensagem completa:

D:\Projetos>composer create-project laravel/laravel estoque "5.0."
Installing laravel/laravel (v5.0.0)
  - Installing laravel/laravel (v5.0.0): Downloading (100%)
Created project in estoque
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - laravel/framework v5.0.9 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    - laravel/framework v5.0.8 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    - laravel/framework v5.0.7 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    - laravel/framework v5.0.6 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    ...
    - laravel/framework 5.0.30 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    - Installation request for laravel/framework 5.0.* -> satisfiable by laravel/framework[5.0.30, v5.0.0, v5.0.1, v5.0.10, v5.0.11, v5.0.12, v5.0.13, v5.0.14, v5.0.15, v5.0.16, v5.0.17, v5.0.18, v5.0.19, v5.0.2, v5.0.20, v5.0.21, v5.0.22, v5.0.23, v5.0.24, v5.0.25, v5.0.26, v5.0.27, v5.0.28, v5.0.29, v5.0.3, v5.0.31, v5.0.32, v5.0.33, v5.0.34, v5.0.35, v5.0.4, v5.0.5, v5.0.6, v5.0.7, v5.0.8, v5.0.9].

  To enable extensions, verify that they are enabled in your .ini files:
    - C:\xampp\php\php.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

Obrigado.

4 respostas

Oi Maykon, tudo bom?

Você tem razão, está faltando a extensão. No ubuntu seria tranquilo. Um simples apt-get resolveria. Mas, no windows, o passo-a-passo é um pouco mais chato. aqui você encontra uma explicação da propria documentação de como realizar o processo =)

É importante tomar cuidado com a versão do PHP também. Verifica a compatibilidade entre a versão do framework e a versão da linguagem que você está utilizando. Algumas funções que eram nativas no php 5.x deixaram de existir nas versões 7.x. Isso pode te trazer alguns problemas no futuro.

Qualquer problema é só falar.

Abraço.

André,

obrigado pela resposta. Pelo que eu entendi do site, eu vou ter que:

1) compilar o projeto do mcrypt que encontrei no PECL, já que ele não disponibiliza as dlls em si;

2) ou baixar a versão 5.2 ou inferior do PHP para conseguir as DLLs, já que elas não são mais usadas a partir da 5.3

Nas palavras do próprio site do mcrypt:

Windows users will find the library is the PHP 5.2 Windows binaries release. 
PHP 5.3 Windows binaries uses the static version of the MCrypt library, no DLL are needed.

Tentei trapacear usando a versão 5.3 do laravel, ao invés da 5.0, na geração do projeto estoque, e deu certo: ela também não requer mais o uso das DLLs.

O problema é que a estrutura já se mostrou logo de cara radicalmente diferente da versão usada no curso (não existe mais arquivo "app/Http/routes.php", e sim o equivalente: "routes/web.php" (A quem interessar: https://laravel.com/docs/5.3/routing)).

Some-se a isso o que você disse sobre a incompatibilidade de versões entre PHP e Laravel (verifiquei que a minha versão atual é a 7.2.2), e acho que a única opção que me resta é não só pegar as dlls do mcrypt do PHP 5.2, mas efetivamente instalar e utilizar esta versão do PHP para o curso, não estou certo?

O que acha, sigo mesmo por este caminho? Instalo a versão 5.2.x do PHP no lugar do atual 7.2.2, para o curso?

Obrigado pela ajuda.

solução!

Olha, acredito que a melhor abordagem para não ter dor de cabeça ao longo do curso é utilizar as versões compativeis com o que o instrutor fez. Entretanto, é bem legal ir se atualizando no framework. A documentação do laravel é bem boa e tenho certeza que você vai conseguir encontrar os relativos nas versões mais novas dando uma olhada por lá.

De qualquer forma, é sempre possivel abrir uma duvida aqui no forum conforme possiveis problemas de versão forem surgindo.

Qualquer coisa é só falar =)

Valeu André

Decidi fazer como você disse, utilizando as versões que já tinha instalado ao invés de fazer o "downgrade". Até o momento não tive nenhuma grande dor de cabeça.

Obrigado pela força!