Laravel에는 Mcrypt PHP 확장이 필요합니다


429

내가 사용하려고 migrate의 기능 Laravel 4OSX. 그러나 다음과 같은 오류가 발생합니다.

Laravel requires the Mcrypt PHP extension.

내가 이해하는 한 이미 활성화되어 있습니다 (아래 이미지 참조).

무엇이 잘못되었으며 어떻게 해결할 수 있습니까?

여기에 이미지 설명을 입력하십시오


Laravel 3 또는 4를 사용하십니까?
Jan P.

정보를 게시물에 추가했습니다. Laravel 4
Patrick Reck

4
아마이 포스트가 당신을 도울 것입니다 : stackoverflow.com/questions/14476181/…
Jan P.

내장 PHP를 사용하고 있습니까, 아니면 다른 버전을 설치하셨습니까? 그렇다면 어떻게 설치 했습니까?
Jamie Schembri

2
homebrew를 사용 하여이 쉬운 솔루션을 찾았습니다. jorble.com/2013/04/install-php-mcrypt-in-macosx
gelviis

답변:


288

웹 지원 확장과 명령 줄 지원 확장은 다를 수 있습니다. php -m터미널에서 실행하여이 목록 에 있는지 확인하십시오 mcrypt. 그렇지 않은 경우 터미널에서 php.ini실행 하여 명령 줄이 파일을 로드하는 위치를 확인하십시오 php --ini.

php.ini파일에서 확장명을 활성화 할 수 있습니다.

OSX

OSX와 함께 제공되는 기본 PHP를 가리키는 터미널로 인해 OSX에서 문제가 발생하는 사람들에 대해 들었습니다. 대신 PHP의 실제 경로를 포함하도록 bash 프로파일을 업데이트해야합니다. 이와 같은 것 (실제로 OSX를 사용하지 않으므로 100 %가 아닐 수도 있음) :

export PATH=/usr/local/php5/bin:$PATH

우분투

이전 버전의 우분투 (14.04 이전) sudo apt-get install php5-mcrypt에서는 실행할 때 실제로 확장 프로그램을 설치하지 않습니다 mods-available. 심볼릭 링크가 필요합니다.

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini

모든 우분투 버전에서는 일단 설치되면 모드를 활성화해야합니다. 당신은 그것을 할 수 있습니다 php5enmod.

sudo php5enmod mcrypt
sudo service apache2 restart

노트


4
이것은 Ubuntu에서 나를 위해 일했습니다. 감사합니다! sudo apt-get install php5-mcrypt실제로 확장 기능을 완전히 설치하지 않는 방법 은 이상합니다.
Aristides

우분투
13.10-나도

1
분명히 그것은 이미 mcrypt ini를 mods-available에 설치 했으므로 php5enmod 명령을 알지 못했습니다. 그것을 사용하면 매력처럼 작동합니다. 감사!
imkingdavid

그래서 이것에 대해, 나는 PHP -m에 갈 때 mcrypt가 나열되어 있습니다. 나는 brew로 mcrypt를 설치하려고 시도했지만 효과가있는 것 같습니다. 그러나 Laravel은 여전히 ​​Mcrypt PHP 확장이 필요하다고 말합니다.
Marais Rossouw '10

1
@imkingdavid와 마찬가지로 기호 링크가 필요하지 않았습니다. php5enmod로 충분했습니다. 우분투 14.04 LTS
Brett

340

당신이 있습니까 MAMP가 설치되어 있습니까?

which php터미널에서 사용 중인 PHP 버전을 확인하십시오.

MAMP의 PHP 버전이 아닌 경우 .bash_profile사용자의 홈 디렉토리를 편집하거나 추가해야합니다 .cd ~

에서 .bash_profile다음 줄을 추가하십시오.

export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH

편집 : 먼저 명령 cd /Applications/MAMP/bin/php을 사용하여 사용중인 MAMP의 PHP 버전을 확인한 다음 위의 PHP 버전으로 바꿔야합니다.

그런 다음 restart터미널에서 현재 사용중인 PHP를 확인하십시오.

그리고 지금 작동해야합니다.


18
Mcrypt를 얻기 위해 MAMP가 필요하지 않습니다.
jackyalcine

48
물론 Mcrypt를 얻기 위해 MAMP가 필요하지 않습니다. 이 답변은 컴퓨터에 XAMPP 또는 MAMP 등 여러 버전의 PHP가 설치되어있는 사람들을위한 것입니다.
JustinHo

마찬가지로 AMPPS 사용자의 경우 : export PATH=/Applications/AMPPS/php-5.4/bin:$PATH... 5.4.xx로 촬영한다고 가정하면 5.3 및 5.5도 있습니다.
Joel Mellon

6
모두가 MAMP를 사용하지 않으면 나머지 사람들에게 답이 있습니까?
TuGordoBello

2
방금 지적한 cd ~것은, 매우 중요 .bash_profile합니다. 거기에 있는 것을 열어야합니다 . 또한 새로운 bash 변수가로드되도록 터미널을 닫았다가 다시 열어야합니다. 변경 사항이 적용되었는지 확인하기 위해 어떤 PHP를 실행하고 행복한 코딩을 수행하십시오!
wired00

142

XAMPP 1.7.3 및 Mac을 사용하는 사람들에게

  1. 터미널로 이동
  2. 시작하다 which php
    • 이 표시되면 /usr/bin/php3으로 진행하십시오.
  3. 입력 sudo nano ~/.bash_profile(또는 sudo vim ~/.bash_profile사용법을 알고있는 경우)
  4. 그런 다음 붙여 넣기 export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. Ctrl+O그런 다음 입력하여 저장 한 다음 Ctrl+X종료하십시오.
  6. 유형 cd ~
  7. 유형 . .bash_profile
  8. 터미널을 다시 시작하십시오.
  9. 를 입력하십시오 which php. 제대로했다면 # 4의 경로와 같아야합니다.

mcrypt 오류의 원인은 Mac에서 기본 PHP를 사용하기 때문에 xampp에있는 것으로 변경해야하기 때문입니다.

추신 : Mac 사용자를 위해 Laravel 4에 MAMP를 사용하는 것이 좋습니다.이 문제는 땀없이 PHP 파일 정보 오류와 함께 해결되며 xampp의 PHP 버전은 너무 오래되었습니다.


12
또한 좋은 답변입니다! MAMP의 경우 :"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
Foxinni

3
~ / .bash_profile이없는 사람들을 위해 ~ / .bashrc
Ironwind

6
.bash_profile을 즉시 실행합니다. 일반적으로 해당 bash를 실행하려면 다시 시작해야합니다.
Bryan P

문제가 발생하여 이제 터미널에서 sudo를 인식하지 못함
Sunny R Gupta

lampp에서도 작동합니다. 경로를export PATH="/opt/lampp/bin:$PATH"
JTC

87

OSX (homebrew가 설치된)에서 MAMP 또는 XAMPP가 아닌 사용자의 경우 :

brew install homebrew/php/php56-mcrypt

건배!


1
나는 이것이 네이티브 OSX PHP에서 작동하지 않을까 걱정했지만 방금 설치했으며 PATH 나 다른 것을 엉망으로 만들 필요가 없었습니다. 그냥 작동합니다. 좋은데
Lauren

3
이 답변을이 스레드의 주요 답변에 추가하여보다 포괄적 인 리소스로 만들면 좋을 것입니다. Lauren이 언급했듯이 빠른 조언에 감사드립니다. 이것은 실제로 문제를 해결합니다.
Bryan Rayner

4
이것은 실제로되고 $ brew install homebrew/php/php55-mcrypt, 그렇지 않으면 있어요Error: No available formula with the name "php55-mcrypt"
코너 거머리에게

47

우분투를 사용하면

sudo php5enmod mcrypt

나를 위해 트릭을했다. CLI에서 PHP를 사용해야하기 때문에 Apache를 다시 시작할 필요가 없습니다.


37

우분투에서 (PHP-FPM, Nginx)

sudo apt-get install php5-mcrypt

php5-mcrypt를 설치 한 후

mods-available에서 ini 파일에 심볼릭 링크를 만들어야합니다 :

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini

사용 :

sudo php5enmod mcrypt

php5-fpm을 다시 시작하십시오 :

sudo service php5-fpm restart

자세한 세부 사항


내가 실행 sudo aptitude -y install php5-mcrypt한 다음, sudo php5enmod mcryptsudo service php5-fpm restart. (소프트 링크 단계를 건너 뛰었습니다). 그것은 효과가 있었다 :)
Aditya MP

26

Laravel이 Apache에서 작동하도록하기

PHP 버전 : PHP 5.5.9

우분투 버전 : 14.04

나는 창문에 laravel 프로젝트를 가지고 있었다. 우분투 서버에 복사하면 mcrypt 오류가 발생하기 시작했습니다. 많은 시간의 시행 착오 끝에

장인의 명령을 받고

(장인 명령 행 도구를 사용하는 동안 mcrypt 오류가 발생한 경우)

나는 많은 시행 착오를 했으므로 전에 php5enmod 명령을 실행할 때마다 오류 메시지가 나타납니다. 그러나 새로 설치하면 오류 메시지가 없습니다. 이 단계 후 나는 장인 명령 작업을 얻었다

sudo rm /etc/php5/mods-available/mcrypt.ini
sudo apt-get purge php5-mcrypt
sudo apt-get install mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

브라우저 오류 수정

(로컬 라 라벨 색인 페이지에 액세스 할 때 브라우저에서 mcrypt 오류가 발생한 경우)

sudo nano /etc/php5/apache2/php.ini

PHP ini의 동적으로 컴파일 된 확장 섹션 아래에 다음 줄을 추가하십시오.

extension=mcrypt.so

아파치 서버를 다시 시작하고 라 라벨 캐시와 모든 작업을 제거하십시오.


PHP docker image 작업중인 경우 실행해야합니다 docker-php-ext-install mcrypt. 이미지에서 테스트되었습니다 : php:5.6.31-apache. 그것 없이는 php -m표시되지 않습니다 mcrypt.
Ewa

19

Ubuntu 14.04에서 php-fpm 설치의 경우 다음이 저에게 효과적이었습니다.

sudo apt-get install php5-mcrypt

mcrypt.ini내부에 파일 이 생성 됩니다/etc/php5/mods-available/

그때

sudo php5enmod mcrypt

다음에 심볼릭 링크를 만듭니다. /etc/php5/fpm/conf.d/

php-fpm 서비스를 다시 시작하십시오. sudo service php5-fpm restart


19

우분투의 경우 다른 사람들이 작동하지 않으면 다음 단계를 시도하십시오.

  1. cd ~
  2. sudo apt-get remove php5-mcrypt
  3. sudo apt-get install php5-mcrypt
  4. sudo php5enmod mcrypt
  5. sudo service apache2 restart

도움이 되길 바랍니다. 감사 !


19

또는 다음을 사용하십시오.

sudo apt-get install php5-mcrypt

이것이 표준 PHP 설치에서 작동하는지 확실하지 않습니다-설치했습니다 php 5.5.7 패키지를 사용하여 했습니다 :

sudo add-apt-repository ppa:ondrej/php5 
sudo apt-get update

16

내 OS는 Yosemite 입니다.

구성 경로를 찾아서이 문제를 해결합니다.

php --ini

출력 예 :

Configuration File (php.ini) Path: /usr/local/etc/php/5.5
Loaded Configuration File:         /usr/local/etc/php/5.5/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.5/conf.d
Additional .ini files parsed:      (none)

다음 단계:

  1. php55 ini 파일 이름 바꾸기 또는 삭제
  2. 심볼릭 링크 만들기
  3. Apache 서버를 다시 시작하십시오.

명령 :

mv /usr/local/etc/php/5.5/php.ini /usr/local/etc/php/5.5/php.ini.default
ln -s /etc/php.ini /usr/local/etc/php/5.5/php.ini
sudo apachectl restart

그런 다음 다음을 통해 PHP 모듈을 확인할 수 있습니다.

php -m

16

유머에게만

yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath

아마 당신은 remi repo를 설치해야합니다



14

한 환경에서 모두 필요합니다. MAMP 또는 XAMPP 또는 기타 도구를 사용할 수 있습니다. 이러한 도구 중 하나를 설치 한 후에는 .bash_profile (bash를 사용한다고 가정)을 편집 (작성)해야합니다.

또는 간단하고 전문적인 사용자라도 Laravel Homestead를 사용할 수 있습니다.

공식 문서에 대한 링크는 다음과 같습니다. http://laravel.com/docs/5.0/homestead

또한 Jeffrey는 https://laracasts.com/series/laravel-5-fundamentals/episodes/2에 대한 무료 자습서를 제공합니다.

다음 도구를 모두 사전 설치하기 때문에 홈스테드를 사용하는 것이 좋습니다.

  • 우분투 14.04
  • PHP 5.6
  • HHVM
  • 니 진스
  • MySQL
  • 포스트그레스
  • 노드 (Bower, Grunt 및 Gulp 포함)
  • 레디 스
  • Memcached
  • 콩 줄기
  • 라 라벨 사절
  • 패브릭 + 힙챗 확장

10

@JetLaggy에서 확장 :

MAMP 디렉토리로 .bash_profile을 반복해서 수정 한 후 MAMP php 디렉토리의 파일 권한을 변경하고 올바른 디렉토리를 표시하기 위해 'which php'를 얻을 수있었습니다. 문제는 'php -v'와 같은 다른 기능이 작동하지 않았다는 것입니다.

그래서 MAMP를 업데이트했습니다. http://documentation.mamp.info/en/mamp/installation/updating-mamp

이것은 내 특정 설정에 대한 트릭을 수행했습니다. 업데이트 된 버전의 PHP를 반영하도록 PATH를 조정해야했지만 일단 완료하면 모든 것이 작동했습니다!


9

OS X에서

MAMP 사용

명령을 입력하십시오 which php터미널에 을 사용중인 PHP 버전을 확인하십시오. MAMP의 PHP 버전이 아닌 경우 Bash에서 사용하는 $ PATH 변수를 업데이트해야합니다.

먼저, "cd / Applications / MAMP / bin / php"명령을 사용하여 MAMP에서 어떤 PHP 버전을 확인하고 버전을 기록해야합니다 (예 : php5.6.7).

버전을 알고 나면 ~/.bash_profile파일 ( .bash_profile홈 디렉토리에 있는 파일)을 편집하고 내보내기 행을 추가해야합니다.

    export PATH=/Applications/MAMP/bin/php/php5.6.7/bin:$PATH

php5.6.7을 MAMP에서 선택한 PHP 버전으로 바꿔야합니다.

파일이 저장되면 터미널을 닫고 다시 엽니 다. 이 작업이 완료되면 MAMP와 함께 제공되는 PHP를 사용하게됩니다.


내부에 넣어야 할 라인을 쉽게 찾는 한 가지 방법 .bash_profile은 터미널 내부에서 다음 명령을 실행하는 것 입니다.

    echo export PATH=`cat /Applications/MAMP/conf/apache/httpd.conf \
         | grep php | grep -i LoadModule | head -n1 \
         | sed -e 's/^[^\/]*\/\(.*\)\/mod.*/\/\1/'`/bin:\$PATH

이 세 줄을 복사하여 터미널에 붙여 넣으면 MAMP 제어판에서 선택한 PHP 버전이 올바르게 출력됩니다.

Homebrew / MacPorts 사용하기

이 두 패키지 관리자 중 하나와 함께 제공되는 PHP를 사용하는 경우 path포함 /usr/local/bin/(Homebrew) 또는 /opt/local/bin(MacPorts)를 확인하십시오 .

MacPorts로 PHP 경로 확인

다음 명령으로 MacPorts를 사용하여 PHP의 정확한 위치를 찾을 수 있습니다.

port contents php70 | grep bin/php

php70설치 한 PHP 버전으로 바꿔야 합니다.

Homebrew-php로 PHP 경로 확인

Homebrew-php ( https://github.com/Homebrew/homebrew-php )는 다양한 버전의 PHP가있는 탭입니다.

다음 명령으로 Homebrew를 사용하여 PHP의 정확한 위치를 찾을 수 있습니다.

brew --prefix homebrew/php/php56

php56설치 한 PHP 버전으로 바꿔야 합니다.


6

우분투 14.04에서

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

우분투 16.04

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt

우분투 18.04

sudo apt install php7.0-mcrypt
sudo phpenmod mcrypt

또는

sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt

5

Z Shell을 사용하는 경우 다음을 수행하십시오.

  1. 터미널 열기
  2. 수도 nano ~/.zshrc
  3. 붙여 넣기 export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
  4. 저장
  5. 운영 source ~/.zshrc
  6. 실행 which php -MAMP 5.6.10 경로를 가져와야합니다.

5.6.10은 MAMP에서 설정 한 PHP 버전입니다.


3

추출 기능이있는 OSX

$ brew install mcrypt php70-mcrypt

PHP 7.0.x를 사용하고 있으므로 다른 버전을 사용하는 경우 "php70"을 버전으로 변경하십시오.
다른 답변에서 언급했듯이으로 PHP 버전을 볼 수 있습니다 $ php -v.


3

오늘도 여기에 오는 사람들을 위해 :

라 라벨은 mcrypt더 이상 확장이 필요하지 않습니다 .mcryptlibmcrypt의 마지막 업데이트는 2007 년에 더 이상 사용되지 않습니다. Laravel 4.2도 더 이상 사용되지 않으며 더 이상 지원되지 않습니다. 최선의 (= 보안) 솔루션은 Laravel> 5.1로 업데이트하는 것입니다 (Laravel 5.2 이전에는 LTS가 없습니다).

2015 년 6 월 Mcrypt가 Laravel에서 제거되었습니다 : https://github.com/laravel/framework/pull/9041


나는 농가 공급을 실행하여 문제를 해결했습니다

0

sudo PHP 설치 mcrypt

sudo php5enmod mcrypt


1
귀하의 의견은 기술적으로 사실 일 수 있지만 여기에 귀하의 답변에 대한 설명을 StackOverflow에 포함시키기 위해 노력하고 있습니다. 또한 OP가 이미 설치된 것처럼 보입니다. mcryptOP의 문제를 해결할 수 있다고 생각하는 이유를 확장 할 수 있습니까?
milo526

0

PHP 버전에 따라 우분투 14.04에서 : 5.6,7.0,7.1,7.2,7.3

sudo apt-get 설치 PHP {version} -mcrypt

sudo apt-get install php7.1-mcrypt

sudo phpenmod mcrypt 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.