Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

17
respostas

Erro no composer create

Ao tentar executar o comando composer create-project laravel/laravel estoque "5.0.", está dando um erro relacionado a php_mcrypt.dll. Pesquisando verifiquei que esta biblioteca foi descontinuada a partir do PHP 7.2.

O que fazer?

17 respostas

Bom dia, Marcio.

Cole aqui o erro para que possamos lhe auxiliar.

Att.

D:\Alura\LARAVEL>composer create-project laravel/laravel estoque "5.0." Installing laravel/laravel (v5.0.0)

  • Installing laravel/laravel (v5.0.0): Loading from cache 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 v5.0.5 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.4 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.35 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.34 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.33 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.32 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.31 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.3 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.29 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.28 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.27 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.26 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.25 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.24 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.23 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.22 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.21 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.20 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.2 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.19 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.18 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
  • laravel/framework v5.0.17 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.

    • laravel/framework v5.0.16 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.15 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.14 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.13 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.12 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.11 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.10 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.1 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    • laravel/framework v5.0.0 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:\php\php.ini You can also run php --ini inside terminal to see which files are used by PHP in CLI mode.

Olá, Márcio

A mensagem de erro indica que deve ser habilitado a extensão ext-mcrypt no seu php.ini.

Em sua mensagem inicial você mencionou php_mcrypt.dll com base nisso julgo que seu sistema operacional é windows.

Basta você acessar seu php.ini e liberar descomentado ( remover o ; ) a extensão do mcrypt.

Caso você não saiba onde se encontra o seu php.ini execute o seguinte comando no terminal que o mesmo indicará a localização, sendo:

php --ini

Após localizar o php.ini, habilitar a extensão, você deve realizar o restart do PHP, para que as novas configurações entre em vigor.

Att,

Diego cheguei a fazer isso mas não funcionou pq a dll não existia na pasta EXT. Ao pesquisar verifiquei o mcrypt tinha sido descontinuado (http://php.net/manual/en/intro.mcrypt.php), e com isso não soube o que fazer...

Estou usando esta versão do PHP:

D:\Alura\LARAVEL>php -version PHP 7.3.0 (cli) (built: Dec 6 2018 01:54:16) ( NTS MSVC15 (Visual C++ 2017) x64 ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies

Olá Marcio, o seu PHP está na versão 7.3.0 e a biblioteca foi descontinuada a partir da versão 7.1.0. Neste caso, você precisa desinstalar a PHP na sua máquina e instalar a versão 5.6. Ou instalar uma outra versão mais atual do Laravel.

Olá,

@Marcio a extensão foi descontinuada do PHP, ou seja não é mais empacotada junto ao mesmo, onde foi migrada para o pecl ao qual fornece ferramenta para a instalação a extensão.

@Wesley, discordo do seu argumento, downdrade de versão do PHP apenas pelo fato de uma extensão não ser mais empacotada junto ao PHP não é recomendado, alias downgrade é taxativamente desencorajado. Cautela com suas afirmações, pois o Marcio poderia ter desinstalado o PHP e instalado uma versão que não é mais mantida (depreciada em 01/12/2019).

@marcio Caso tenha dúvidas sobre como instalar via pecl avise que posso lhe auxiliar.

Oi Diego, a instalação da biblioteca pecl (que você citou) resolveria o problema do Márcio?

Ou você acha que seria melhor ele utilizar uma versão mais atual do Laravel que suporta o PHP 7.3.0?

Olá, @wesley

Seria ideal utilizar o Laravel 5.7, porém o @marcio deve estar com curso em andamento, onde o mesmo utiliza o Laravel 5.0 onde possivelmente ocorrerá incompatibilidade de recursos, impactando no projeto em desenvolvimento.

Caso ele tenha conhecimento para corrigir os mesmos, show atualiza e segue o jogo, porém acredito que não será esse o caminho.

Com isso a instalação da extensão resolverá o erro de instalação e o mesmo prosseguirá com os estudos.

Levanto essa pergunta ao @marcio, o que você acha? Hoje você se encontra com a versão mais atual do PHP, isso é ótimo, caso queira topar a atualização e validar se ocorrerá incompatíbildiade, segue o jogo e manda as perguntas em mais tópicos.

Top! Obrigado pelo feedback!

@wesley

Referente a sua duvia:

  • "Oi Diego, a instalação da biblioteca pecl (que você citou) resolveria o problema do Márcio?"

PECL é um repositório para extensões PHP, onde ela instala globalmente no PHP a extensão.

Somente a instalação da PECL não resolve pois após instalação da mesma, deve instalar a extensão.

Compreendi Diego, muito obrigado!

Olá @wesley

Obrigado eu, pela receptividade ao feedback.

Então.. Como não tenho bagagem ainda, não consigo definir o melhor caminho. O que vocês fariam? Uma versão mais nova do Laravel resolveria? Porque se eu tiver que ficar fazendo pesquisas, extra curso, para saber o que substituirá determinado compeonente, não será muito produtivo.

Olá, @marcio.

Recomendo a abordagem da instalação da pecl e consecutivamente a instalação ad extensão. Será o caminho mais curto para solucionar seu problema.

Fiquei confuso com a instalação do pecl e acabei conseguindo instalando o laravel mais atual. Obrigado pela ajuda