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


429

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

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 mcrypt와 sudo 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.