Laravel benötigt die Mcrypt PHP-Erweiterung

429

Ich versuche die migrateFunktion in Laravel 4on zu verwenden OSX. Ich erhalte jedoch den folgenden Fehler:

Laravel requires the Mcrypt PHP extension.

Soweit ich weiß, ist es bereits aktiviert (siehe Abbildung unten).

Was ist falsch und wie kann ich das beheben?

Geben Sie hier die Bildbeschreibung ein

Patrick Reck
quelle
Verwenden Sie Laravel 3 oder 4?
Jan P.
Habe gerade die Infos zum Beitrag hinzugefügt. Es ist Laravel 4
Patrick Reck
4
Vielleicht hilft Ihnen dieser Beitrag: stackoverflow.com/questions/14476181/…
Jan P.
Verwenden Sie integriertes PHP oder haben Sie eine andere Version installiert? Wenn ja, wie haben Sie es installiert?
Jamie Schembri
2
Ich fand diese einfache Lösung mit Homebrew: jorble.com/2013/04/install-php-mcrypt-in-macosx
gelviis

Antworten:

288

Die webfähigen Erweiterungen und befehlszeilenfähigen Erweiterungen können unterschiedlich sein. Führen Sie es php -min Ihrem Terminal aus und überprüfen Sie, ob mcryptes aufgelistet ist. Wenn dies nicht der Fall ist, überprüfen Sie, wo die Befehlszeile Ihre php.iniDatei lädt, indem Sie php --inivon Ihrem Terminal aus ausführen.

In dieser php.iniDatei können Sie die Erweiterung aktivieren.

OSX

Ich habe von Leuten unter OSX gehört, die Probleme haben, weil das Terminal auf das mit OSX gelieferte native PHP verweist. Sie sollten stattdessen Ihr Bash-Profil aktualisieren, um den tatsächlichen Pfad zu Ihrem PHP einzuschließen. So etwas in der Art (ich verwende OSX eigentlich nicht, daher ist dies möglicherweise nicht 100%):

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

Ubuntu

In früheren Versionen von Ubuntu (vor 14.04) wird sudo apt-get install php5-mcryptdie Erweiterung beim Ausführen nicht tatsächlich in das installiert mods-available. Sie müssen es symlink.

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

In allen Ubuntu-Versionen musst du den Mod aktivieren, sobald er installiert ist. Das kannst du machen mit php5enmod.

sudo php5enmod mcrypt
sudo service apache2 restart

ANMERKUNGEN

Jason Lewis
quelle
4
das hat bei mir unter Ubuntu funktioniert, danke! Seltsam, wie sudo apt-get install php5-mcryptdie Erweiterung nicht vollständig installiert wird.
Aristides
Ubuntu 13.10 - Ich musste auch mcrypt selbst installieren
Ondrej Galbavý
1
Anscheinend hatte es die mcrypt ini bereits in mods-available installiert, ich kannte den Befehl php5enmod einfach nicht. Damit funktioniert es wie ein Zauber. Vielen Dank!
Imkingdavid
Also nur auf diesem, ich habe mcrypt aufgelistet, wenn ich php -m gehe, wenn ich gehe, welches php es sagt / usr / local / bin / php. Ich habe versucht, mcrypt mit Brew zu installieren und schien funktioniert zu haben. Aber Laravel sagt immer noch, dass eine Mcrypt-PHP-Erweiterung erforderlich ist.
Marais Rossouw
1
Wie @imkingdavid benötigte ich auch keinen symbolischen Link. php5enmod war ausreichend. Ubuntu 14.04 LTS
Brett
340

Haben Sie MAMP installiert?

Verwenden Sie which phpim Terminal, um zu sehen, welche Version von PHP Sie verwenden.

Wenn es sich nicht um die PHP-Version von MAMP handelt, sollten Sie .bash_profiledas Home-Verzeichnis des Benutzers bearbeiten oder hinzufügen.cd ~

In .bash_profile, fügen Sie folgende Zeile ein :

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

Bearbeitet: Zuerst sollten Sie den Befehl verwenden cd /Applications/MAMP/bin/php, um zu überprüfen, welche PHP-Version von MAMP Sie verwenden, und dann durch die obige PHP-Version ersetzen.

Dann restartdas Terminal, um zu sehen, welches PHP Sie gerade verwenden.

Und es sollte jetzt funktionieren.

JustinHo
quelle
18
Sie brauchen kein MAMP, um Mcrypt zu bekommen.
Jackyalcine
48
Natürlich brauchen Sie kein MAMP, um Mcrypt zu bekommen. Diese Antwort ist nur für Personen gedacht, auf denen mehrere PHP-Versionen installiert sind, z. B. XAMPP oder MAMP oder andere.
JustinHo
Ähnliches gilt für AMPPS-Benutzer: export PATH=/Applications/AMPPS/php-5.4/bin:$PATH... vorausgesetzt, Sie fotografieren für 5.4.xx, sind auch 5.3 und 5.5 enthalten.
Joel Mellon
6
Jeder benutzt MAMP nicht, hast du eine Antwort für den Rest der Leute?
TuGordoBello
2
Ich dachte nur, ich möchte darauf hinweisen, dass dies cd ~sehr wichtig ist. Sie müssen das .bash_profiledort vorhandene öffnen. AUCH wichtig ist, dass Sie Ihr Terminal schließen und erneut öffnen, damit die neuen Bash-Variablen geladen werden. Stellen Sie einfach sicher, dass Sie das PHP ausführen, um zu überprüfen, ob Ihre Änderung angewendet wurde.
Wired00
142

Für diejenigen, die XAMPP 1.7.3 und Mac verwenden

  1. Gehe zum Terminal
  2. Eingeben which php
    • Wenn es heißt /usr/bin/php, fahren Sie mit 3 fort.
  3. Geben Sie ein sudo nano ~/.bash_profile(oder sudo vim ~/.bash_profilewenn Sie wissen, wie man es benutzt)
  4. Dann fügen Sie dies ein export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. Ctrl+Odann eingeben, um zu speichern, dann Ctrl+Xbeenden.
  6. Art cd ~
  7. Art . .bash_profile
  8. Terminal neu starten.
  9. Geben Sie ein which php. Wenn Sie es richtig gemacht haben, sollte es dem Pfad in # 4 entsprechen.

Der Grund für den mcrypt-Fehler ist, dass Ihr Mac sein natives PHP verwendet. Sie müssen es auf das ändern, das xampp hat.

PS Ich würde empfehlen, MAMP für Laravel 4 für Mac-Benutzer zu verwenden. Dieses Problem wird zusammen mit dem PHP-Datei-Info-Fehler ohne Probleme behoben, und die PHP-Version von xampp ist so veraltet.

Bryan P.
quelle
12
Auch eine gute Antwort! Sollte dies für MAMP sein:"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
Foxinni
3
Für diejenigen, die kein ~ / .bash_profile haben, versuchen Sie, die ~ / .bashrc
Ironwind
6
führt das .bash_profile sofort aus, normalerweise müssen Sie neu starten, damit diese Bash ausgeführt wird
Bryan P
Etwas Schlimmes ist passiert und jetzt würde mein Terminal Sudo nicht einmal erkennen
Sunny R Gupta
Es funktioniert auch auf Lampp, ändern Sie einfach den Pfad zuexport PATH="/opt/lampp/bin:$PATH"
JTC
87

Für Nicht-MAMP- oder XAMPP-Benutzer unter OSX (mit installiertem Homebrew):

brew install homebrew/php/php56-mcrypt

Prost!

oozzal
quelle
1
Ich hatte Angst, dass dies mit nativem OSX PHP nicht funktionieren würde, aber ich habe das einfach installiert und musste nicht mit meinem PATH oder irgendetwas herumspielen. Funktioniert einfach. Schön.
Lauren
3
Es wäre großartig, wenn diese Antwort an die führenden Antworten in diesem Thread angehängt würde, um sie zu einer umfassenderen Ressource zu machen. Vielen Dank für den schnellen Rat, wie Lauren erwähnte, der das Problem wirklich behebt.
Bryan Rayner
4
Dies ist eigentlich $ brew install homebrew/php/php55-mcryptandersError: No available formula with the name "php55-mcrypt"
Connor Leech
47

Mit Ubuntu einfach

sudo php5enmod mcrypt

hat den Trick für mich gemacht. Sie müssen Apache nicht neu starten, da Sie PHP nur über die CLI verwenden müssen.

mppfiles
quelle
37

In Ubuntu (PHP-FPM, Nginx)

sudo apt-get install php5-mcrypt

Nach der Installation von php5-mcrypt

du musst einen symlink zu ini dateien in mods-verfügbar machen:

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

aktivieren:

sudo php5enmod mcrypt

Starten Sie php5-fpm neu:

sudo service php5-fpm restart

Mehr Details

Nanhe Kumar
quelle
Ich rannte sudo aptitude -y install php5-mcrypt, gefolgt von sudo php5enmod mcryptund sudo service php5-fpm restart. (Ich habe den Softlink-Schritt übersprungen). Es hat funktioniert :)
Aditya MP
26

Laravel an Apache arbeiten lassen

PHP-Version: PHP 5.5.9

Ubuntu-Version: 14.04

Ich hatte ein funktionierendes Laravel-Projekt für Windows. Als ich es auf den Ubuntu-Server kopierte, bekam ich den mcrypt-Fehler. Dies nach vielen Stunden Versuch und Irrtum

das handwerkliche Kommando zum Laufen bringen

(Wenn Sie einen mcrypt-Fehler haben, während Sie das handwerkliche Befehlszeilentool verwenden)

Ich habe viel ausprobiert und jedes Mal, wenn ich den Befehl php5enmod ausgeführt habe, hatte ich Fehlermeldungen. Bei der Neuinstallation gab es jedoch keine Fehlermeldungen. Nach diesem Schritt bekam ich Handwerker Befehl arbeiten

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

Behebung des Browserfehlers

(Wenn Sie beim Zugriff auf die lokale Laravel-Indexseite einen mcrypt-Fehler im Browser haben)

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

füge die folgende zeile unter dem dynamisch kompilierten erweiterungsabschnitt von php ini hinzu

extension=mcrypt.so

Starten Sie den Apache-Server neu, löschen Sie den Laravel-Cache und alles funktioniert

Sojan V Jose
quelle
Wenn Sie an einem PHP-Docker-Image arbeiten , müssen Sie es auch ausführen docker-php-ext-install mcrypt. Auf Bild getestet : php:5.6.31-apache. Ohne das php -mzeigt sich nicht mcrypt.
Ewa
19

Für PHP-Fpm-Installationen unter Ubuntu 14.04 funktionierte Folgendes für mich:

sudo apt-get install php5-mcrypt

Dadurch wird eine mcrypt.iniDatei im Inneren erstellt/etc/php5/mods-available/

Dann

sudo php5enmod mcrypt

erstellt einen Symlink in: /etc/php5/fpm/conf.d/

Starten Sie einfach die PHP-Fpm-Dienste neu sudo service php5-fpm restart

Prateek Choudhary
quelle
19

Versuchen Sie für Ubuntu die folgenden Schritte, wenn andere nicht funktionieren:

  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

Hoffe das wird helfen. Vielen Dank !

Sagiruddin Mondal
quelle
19

Oder verwenden Sie:

sudo apt-get install php5-mcrypt

Ich bin mir nicht sicher, ob dies bei Standard-PHP-Installationen funktioniert. Ich habe es php 5.5.7mit dem Paket installiert von:

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

Mein Betriebssystem ist Yosemite.

Ich behebe dieses Problem, indem ich Konfigurationspfade finde:

php --ini

Beispielausgabe:

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)

Nächste Schritte:

  1. Benennen oder Löschen der php55-INI-Datei
  2. Symlink erstellen
  3. Starten Sie den Apache-Server neu

Befehle:

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

Dann können Sie Ihre PHP-Module überprüfen über:

php -m
d.danailov
quelle
16

Nur für Yumers,

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

Möglicherweise müssen Sie Remi Repo installieren

Sean
quelle
15

Dies löste es für mich in meiner lokalen Linux Mint-Umgebung /ubuntu/350942/cannot-get-mcrypt-for-php5

Ich musste einen Symlink zu meiner Datei /etc/php5/conf.d/mcrypt.ini in den folgenden Ordnern /etc/php5/apache2/conf.d/mcrypt.ini und /etc/php5/cli/conf.d erstellen /mcrypt.ini

Theo Kouzelis
quelle
14

Sie benötigen eine All-in-One-Umgebung. Sie können MAMP oder XAMPP oder andere Tools verwenden. Nach der Installation eines dieser Tools müssen Sie Ihr .bash_profile bearbeiten (erstellen) (vorausgesetzt, Sie verwenden bash).

Oder sogar einfach und professioneller können Sie Laravel Homestead verwenden.

Hier ist ein Link zur offiziellen Dokumentation: http://laravel.com/docs/5.0/homestead

Außerdem hat Jeffrey ein kostenloses Tutorial dazu: https://laracasts.com/series/laravel-5-fundamentals/episodes/2

Ich rate Ihnen, sich für Homestead zu entscheiden, da Sie alle folgenden Tools vorinstallieren.

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • Nginx
  • MySQL
  • Postgres
  • Knoten (mit Laube, Grunzen und Schlucken)
  • Redis
  • Memcached
  • Bohnenstange
  • Laravel Gesandter
  • Stoff + HipChat Erweiterung
mburakergenc
quelle
10

@JetLaggy erweitern:

Nachdem ich immer wieder versucht hatte, .bash_profile mit dem MAMP-Verzeichnis zu ändern, änderte ich die Dateiberechtigungen für das MAMP-PHP-Verzeichnis und konnte 'welches PHP' erhalten, um das richtige Verzeichnis anzuzeigen. Das Problem war, dass andere Funktionen nicht funktionierten, wie z. B. 'php -v'.

Also habe ich MAMP aktualisiert. http://documentation.mamp.info/en/mamp/installation/updating-mamp

Dies war der Trick für mein spezielles Setup. Ich musste meinen PATH anpassen, um die aktualisierte Version von PHP wiederzugeben, aber als ich das tat, funktionierte alles!

abaumer
quelle
9

Unter OS X.

MAMP verwenden

Geben Sie den Befehl ein which php im Terminal ein, um zu sehen, welche Version von PHP Sie verwenden. Wenn es sich nicht um die PHP-Version von MAMP handelt, muss die von Bash verwendete Variable $ PATH aktualisiert werden.

Zuerst sollten Sie den Befehl "cd / Applications / MAMP / bin / php" verwenden, um zu überprüfen, welche PHP-Version von MAMP stammt, und die Version notieren (z. B. PHP5.6.7).

Sobald Sie die Version kennen, sollten Sie die ~/.bash_profileDatei ( dh die Datei .bash_profilein Ihrem Home-Verzeichnis) bearbeiten und eine Exportzeile hinzufügen:

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

Stellen Sie sicher, dass Sie php5.6.7 durch die in MAMP ausgewählte PHP-Version ersetzen.

Stellen Sie nach dem Speichern der Datei sicher, dass Sie Ihr Terminal schließen und erneut öffnen. Sobald dies erledigt ist, verwenden Sie das mit MAMP gelieferte PHP.


Eine Möglichkeit, leicht herauszufinden, welche Zeile Sie .bash_profilein Ihr Terminal einfügen müssen, besteht darin, den folgenden Befehl in Ihrem Terminal auszuführen:

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

Durch Kopieren und Einfügen dieser drei Zeilen in Ihr Terminal wird die im MAMP-Bedienfeld ausgewählte PHP-Version korrekt ausgegeben.

Verwenden von Homebrew / MacPorts

Stellen Sie sicher , dass Ihre pathenthält /usr/local/bin/(Homebrew) oder /opt/local/bin(MacPorts) , wenn Sie PHP verwenden , die mit einem dieser beiden Paketmanager kommt.

Überprüfen des PHP-Pfads mit MacPorts

Sie können den genauen Standort von PHP mithilfe von MacPorts mit dem folgenden Befehl ermitteln:

port contents php70 | grep bin/php

Beachten Sie, dass Sie ersetzen sollten php70die Version von PHP die Sie installiert haben.

Überprüfen Sie den PHP-Pfad mit Homebrew-PHP

Homebrew-php ( https://github.com/Homebrew/homebrew-php ) ist ein Tipp, der verschiedene Versionen von PHP enthält.

Sie können den genauen Standort von PHP mithilfe von Homebrew mit dem folgenden Befehl ermitteln:

brew --prefix homebrew/php/php56

Beachten Sie, dass Sie durch php56die Version von PHP ersetzen sollten, die Sie installiert haben.

Tim Groeneveld
quelle
6

in Ubuntu 14.04

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

Ubuntu 16.04

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt

Ubuntu 18.04

sudo apt install php7.0-mcrypt
sudo phpenmod mcrypt

oder

sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt
Gowthaman D.
quelle
5

Wenn Sie Z Shell verwenden, gehen Sie einfach wie folgt vor:

  1. Terminal öffnen
  2. sudo nano ~/.zshrc
  3. Fügen Sie dies ein; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
  4. speichern
  5. Lauf source ~/.zshrc
  6. Ausführen which php - Sie sollten den Pfad MAMP 5.6.10 erhalten

5.6.10 ist die Version von PHP, die Sie in Ihrem MAMP festgelegt haben.

Unverdrahtet
quelle
3

OSX mit Gebräu

$ brew install mcrypt php70-mcrypt

Ich verwende PHP 7.0.x, also ändere "php70" auf deine Version, wenn du eine andere Version verwendest.
Wie in anderen Antworten angegeben, können Sie Ihre PHP-Version mit sehen $ php -v.

kris
quelle
3

Für diejenigen, die heute noch hierher kommen:

Laravel braucht keine mcryptVerlängerung mehr . mcryptist veraltet, das letzte Update auf libmcrypt war im Jahr 2007. Laravel 4.2 ist ebenfalls veraltet und hat keine Unterstützung mehr. Die beste (= sichere) Lösung ist ein Update auf Laravel> 5.1 (vor Laravel 5.2 gibt es kein LTS).

Mcrypt wurde im Juni 2015 aus Laravel entfernt: https://github.com/laravel/framework/pull/9041

Rap-2-h
quelle
Ich habe mein Problem behoben, indem ich die Homestead-Bereitstellung ausgeführt habe
0

sudo php install mcrypt

sudo php5enmod mcrypt

Anubhav Tiwari
quelle
1
Obwohl Ihr Kommentar technisch gesehen wahr sein könnte, bemühen wir uns, Ihre Antworten hier auf StackOverflow zu erläutern. Darüber hinaus scheint OP bereits installiert zu sein mcrypt. Können Sie erläutern, warum dies Ihrer Meinung nach das Problem von OP beheben wird?
Milo526
0

in Ubuntu 14.04 basierend auf Ihrer PHP-Version: 5.6,7.0,7.1,7.2,7.3

sudo apt-get install php {version} -mcrypt

sudo apt-get install php7.1-mcrypt

sudo phpenmod mcrypt 
Jignesh Joisar
quelle