it-swarm.com.de

Laravel benötigt die Mcrypt PHP Erweiterung

Ich versuche die Funktion migrate in Laravel 4 für OSX zu verwenden. Ich erhalte jedoch die folgende Fehlermeldung:

Laravel requires the Mcrypt PHP extension.

Soweit ich es verstanden habe, ist es bereits aktiviert (siehe Abbildung unten).

Was ist falsch und wie kann ich es beheben?

enter image description here

377
Patrick Reck

Die webfähigen Erweiterungen und die Befehlszeilen-aktivierten Erweiterungen können sich unterscheiden. Führen Sie php -m in Ihrem Terminal aus und prüfen Sie, ob mcrypt aufgeführt ist. Wenn dies nicht der Fall ist, prüfen Sie, von wo aus die Befehlszeile Ihre php.ini-Datei lädt, indem Sie php --ini von Ihrem Terminal aus ausführen.

In dieser php.ini-Datei können Sie die Erweiterung aktivieren.

OSX

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

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

Ubuntu

Wenn Sie Sudo apt-get install php5-mcrypt in früheren Versionen von Ubuntu (vor 14.04) ausführen, wird die Erweiterung nicht wirklich in mods-available installiert. Sie müssen es symbolisch verbinden.

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

Bei allen Ubuntu-Versionen müssen Sie den Mod nach der Installation aktivieren. Sie können das mit php5enmod tun.

Sudo php5enmod mcrypt
Sudo service Apache2 restart

ANMERKUNGEN 

247
Jason Lewis

Hast duMAMPinstalliert?

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

Wenn es nicht die PHP -Version von MAMP ist, sollten Sie im Home-Verzeichnis des Benutzers .bash_profile bearbeiten oder hinzufügen, dh: cd ~

Fügen Sie in .bash_profile folgende Zeile hinzu:

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

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

Dann restart das Terminal, um zu sehen, welche PHP Sie jetzt verwenden.

Und es sollte jetzt funktionieren.

331
JustinHo

Für diejenigen, die XAMPP 1.7.3 und Mac verwenden

  1. Gehe zum Terminal
  2. Geben Sie which php Ein.
    • Wenn dort /usr/bin/php steht, fahren Sie mit 3 fort.
  3. Geben Sie Sudo nano ~/.bash_profile ein (oder Sudo vim ~/.bash_profile, wenn Sie wissen, wie man es verwendet)
  4. Dann füge diesen export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH" ein
  5. Ctrl+O Geben Sie dann ein, um zu speichern, dann Ctrl+X beenden.
  6. Typ cd ~
  7. typ . .bash_profile
  8. terminal neu starten.
  9. Geben Sie which php ein. Wenn Sie es richtig gemacht haben, sollte es der gleiche sein wie der Pfad in # 4.

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

P.S. 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.

141
Bryan P

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

brew install homebrew/php/php56-mcrypt

Prost!

84
oozzal

Nur mit Ubuntu

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.

45
mppfiles

In Ubuntu (PHP-FPM, Nginx)

Sudo apt-get install php5-mcrypt

Nach der Installation von php5-mcrypt

sie müssen einen Symlink zu ini-Dateien in mods-available machen:

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

aktivieren:

Sudo php5enmod mcrypt

php5-fpm neu starten:

Sudo service php5-fpm restart

Mehr Details

37
Nanhe Kumar

Laravel an Apache arbeiten lassen

PHP-Version: PHP 5.5.9

Ubuntu-Version: 14.04

ich hatte ein Laravel-Projekt an Fenstern. als ich es auf ubuntu server kopierte, bekam ich den mcrypt-fehler. dies nach vielen Stunden Versuch und Irrtum

Handwerker-Kommando zum Laufen bringen

(wenn Sie beim Verwenden des handwerklichen Befehlszeilentools einen Mcrypt-Fehler haben)

ich habe viele Versuche gemacht und so habe ich jedes Mal, wenn ich den Befehl php5enmod ausgeführt habe, Fehlermeldungen erhalten. Bei der Neuinstallation gab es jedoch keine Fehlermeldungen. Nach diesem Schritt bekam ich einen handwerklichen Befehl 

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

Fehler beim Browser beheben  

(falls beim Zugriff auf die lokale Laravel-Indexseite ein mcrypt-Fehler im Browser auftritt)

Sudo nano /etc/php5/Apache2/php.ini

fügen Sie die folgende Zeile unter dem Abschnitt "dynamisch kompilierte Erweiterungen" von php ini hinzu

extension=mcrypt.so

starten Sie den Apache-Server neu, leeren Sie den Laravel-Cache und alles, was funktioniert 

24
Sojan V Jose

Für Ubuntu versuchen Sie diese 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 !

18

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

Sudo apt-get install php5-mcrypt

Dadurch wird eine mcrypt.ini-Datei in /etc/php5/mods-available/ erstellt.

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

18

Oder verwenden Sie:

Sudo apt-get install php5-mcrypt

nicht sicher, ob dies bei Standardinstallationen von PHP funktioniert - Ich habe php 5.5.7 mit dem Paket von installiert:

Sudo add-apt-repository ppa:ondrej/php5 
Sudo apt-get update
17
JoeTidee

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. Umbenennen 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: 

php -m
15
d.danailov

Nur für Yumers,

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

Vielleicht brauchst du install remi repo

15
Sean

Dies löste es für mich in meiner lokalen Umgebung von Linux Mint https://askubuntu.com/questions/350942/cannot-get-mcrypt-for-php5

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

14
Theo Kouzelis

Sie brauchen 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 nutzen. 

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

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

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

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • Nginx
  • MySQL
  • Postgres
  • Knoten (mit Bower, Grunzen und Schlucken)
  • Redis
  • Memcached
  • Beanstalkd
  • Laravel Gesandter
  • Fabric + HipChat Erweiterung
12
mburakergenc

Erweiterung auf @JetLaggy:

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" das richtige Verzeichnis anzeigen. Das Problem war, dass andere Funktionen nicht funktionierten, wie zum Beispiel 'php -v'. 

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

Dies hat den Trick für mein spezielles Setup gemacht. Ich musste meinen PATH anpassen, um die aktualisierte Version von PHP wiederzugeben, aber als ich das getan habe, hat alles funktioniert!

10
abaumer

Unter OS X

Verwenden von MAMP

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

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

Sobald Sie die Version kennen, sollten Sie die ~/.bash_profile-Datei (dh den .bash_profile, die sich in Ihrem Ausgangsverzeichnis befindet) 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 Version von PHP ersetzen, die Sie in MAMP ausgewählt haben.

Nachdem die Datei gespeichert wurde, müssen Sie Ihr Terminal schließen und erneut öffnen. Sobald dies erledigt ist, verwenden Sie das mit MAMP gelieferte PHP.


Um herauszufinden, was die Zeile sein sollte, die Sie in Ihren .bash_profile eingeben müssen, können Sie einfach den folgenden Befehl in Ihrem Terminal ausfü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

Beim Kopieren und Einfügen dieser drei Zeilen in Ihr Terminal wird die PHP -Version korrekt ausgegeben, die in der MAMP-Systemsteuerung ausgewählt wurde.

Homebrew/MacPorts verwenden

Stellen Sie sicher, dass Ihre path/usr/local/bin/ (Homebrew) oder /opt/local/bin (MacPorts) enthält, wenn Sie PHP verwenden, das mit einem dieser beiden Paketmanager geliefert wird.

Überprüfen des PHP -Pfads mit MacPorts

Sie können die genaue Position von PHP mithilfe von MacPorts mit dem folgenden Befehl ermitteln:

port contents php70 | grep bin/php

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

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

Homebrew-php ( https://github.com/Homebrew/homebrew-php ) ist ein Tap, der verschiedene PHP-Versionen hat.

Sie können die genaue Position von PHP mithilfe von Homebrew mit dem folgenden Befehl ermitteln:

brew --prefix homebrew/php/php56

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

8
Tim Groeneveld

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. Sparen  
  5. Ausführen source ~/.zshrc
  6. Run which php - Du solltest den MAMP 5.6.10 Pfad bekommen

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

4
Unwired

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
4
Gowthaman

Für diejenigen, die heute noch hierher kommen:

Laravel benötigt keine mcrypt-Erweiterung mehr. mcrypt ist veraltet, das letzte Update von libmcrypt fand im Jahr 2007 statt. Laravel 4.2 ist ebenfalls veraltet und hat keine Unterstützung mehr. Die beste (= sichere) Lösung ist ein Update auf Laravel> 5.1 (es gibt kein LTS vor Laravel 5.2).

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

2
rap-2-h

OSX mit brauen

$ brew install mcrypt php70-mcrypt

Ich verwende PHP 7.0.x. Ändern Sie "php70" in Ihre Version, wenn Sie eine andere Version verwenden.
Wie in anderen Antworten erwähnt, können Sie Ihre PHP-Version mit $ php -v sehen.

2
kris

Sudo PHP installieren mcrypt

Sudo php5enmod mcrypt

0
Anubhav Tiwari

in Ubuntu 14.04 basierend auf deiner 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 
0
Jignesh Joisar