Ich versuche die migrate
Funktion in Laravel 4
on 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?
Antworten:
Die webfähigen Erweiterungen und befehlszeilenfähigen Erweiterungen können unterschiedlich sein. Führen Sie es
php -m
in Ihrem Terminal aus und überprüfen Sie, obmcrypt
es aufgelistet ist. Wenn dies nicht der Fall ist, überprüfen Sie, wo die Befehlszeile Ihrephp.ini
Datei lädt, indem Siephp --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 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%):
Ubuntu
In früheren Versionen von Ubuntu (vor 14.04) wird
sudo apt-get install php5-mcrypt
die Erweiterung beim Ausführen nicht tatsächlich in das installiertmods-available
. Sie müssen es symlink.In allen Ubuntu-Versionen musst du den Mod aktivieren, sobald er installiert ist. Das kannst du machen mit
php5enmod
.quelle
sudo apt-get install php5-mcrypt
die Erweiterung nicht vollständig installiert wird.Haben Sie MAMP installiert?
Verwenden Sie
which php
im Terminal, um zu sehen, welche Version von PHP Sie verwenden.Wenn es sich nicht um die PHP-Version von MAMP handelt, sollten Sie
.bash_profile
das Home-Verzeichnis des Benutzers bearbeiten oder hinzufügen.cd ~
In
.bash_profile
, fügen Sie folgende Zeile ein :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
restart
das Terminal, um zu sehen, welches PHP Sie gerade verwenden.Und es sollte jetzt funktionieren.
quelle
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.cd ~
sehr wichtig ist. Sie müssen das.bash_profile
dort 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.Für diejenigen, die XAMPP 1.7.3 und Mac verwenden
which php
/usr/bin/php
, fahren Sie mit 3 fort.sudo nano ~/.bash_profile
(odersudo vim ~/.bash_profile
wenn Sie wissen, wie man es benutzt)export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
cd ~
. .bash_profile
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.
quelle
"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
export PATH="/opt/lampp/bin:$PATH"
Für Nicht-MAMP- oder XAMPP-Benutzer unter OSX (mit installiertem Homebrew):
brew install homebrew/php/php56-mcrypt
Prost!
quelle
$ brew install homebrew/php/php55-mcrypt
andersError: No available formula with the name "php55-mcrypt"
Mit Ubuntu einfach
hat den Trick für mich gemacht. Sie müssen Apache nicht neu starten, da Sie PHP nur über die CLI verwenden müssen.
quelle
In Ubuntu (PHP-FPM, Nginx)
Nach der Installation von php5-mcrypt
du musst einen symlink zu ini dateien in mods-verfügbar machen:
aktivieren:
Starten Sie php5-fpm neu:
Mehr Details
quelle
sudo aptitude -y install php5-mcrypt
, gefolgt vonsudo php5enmod mcrypt
undsudo service php5-fpm restart
. (Ich habe den Softlink-Schritt übersprungen). Es hat funktioniert :)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
Behebung des Browserfehlers
(Wenn Sie beim Zugriff auf die lokale Laravel-Indexseite einen mcrypt-Fehler im Browser haben)
füge die folgende zeile unter dem dynamisch kompilierten erweiterungsabschnitt von php ini hinzu
Starten Sie den Apache-Server neu, löschen Sie den Laravel-Cache und alles funktioniert
quelle
docker-php-ext-install mcrypt
. Auf Bild getestet :php:5.6.31-apache
. Ohne dasphp -m
zeigt sich nichtmcrypt
.Für PHP-Fpm-Installationen unter Ubuntu 14.04 funktionierte Folgendes für mich:
sudo apt-get install php5-mcrypt
Dadurch wird eine
mcrypt.ini
Datei 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
quelle
Versuchen Sie für Ubuntu die folgenden Schritte, wenn andere nicht funktionieren:
cd ~
sudo apt-get remove php5-mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart
Hoffe das wird helfen. Vielen Dank !
quelle
Oder verwenden Sie:
Ich bin mir nicht sicher, ob dies bei Standard-PHP-Installationen funktioniert. Ich habe es
php 5.5.7
mit dem Paket installiert von:quelle
Mein Betriebssystem ist
Yosemite
.Ich behebe dieses Problem, indem ich Konfigurationspfade finde:
Beispielausgabe:
Nächste Schritte:
Befehle:
Dann können Sie Ihre PHP-Module überprüfen über:
quelle
Nur für Yumers,
Möglicherweise müssen Sie Remi Repo installieren
quelle
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
quelle
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.
quelle
@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!
quelle
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_profile
Datei ( dh die Datei.bash_profile
in Ihrem Home-Verzeichnis) bearbeiten und eine Exportzeile hinzufügen: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_profile
in Ihr Terminal einfügen müssen, besteht darin, den folgenden Befehl in Ihrem Terminal auszuführen: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
path
enthä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:
Beachten Sie, dass Sie ersetzen sollten
php70
die 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:
Beachten Sie, dass Sie durch
php56
die Version von PHP ersetzen sollten, die Sie installiert haben.quelle
in Ubuntu 14.04
Ubuntu 16.04
Ubuntu 18.04
oder
quelle
Wenn Sie Z Shell verwenden, gehen Sie einfach wie folgt vor:
nano ~/.zshrc
export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
source ~/.zshrc
which php
- Sie sollten den Pfad MAMP 5.6.10 erhalten5.6.10 ist die Version von PHP, die Sie in Ihrem MAMP festgelegt haben.
quelle
OSX mit Gebräu
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
.quelle
Für diejenigen, die heute noch hierher kommen:
Laravel braucht keine
mcrypt
Verlängerung mehr .mcrypt
ist 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
quelle
quelle
mcrypt
. Können Sie erläutern, warum dies Ihrer Meinung nach das Problem von OP beheben wird?in Ubuntu 14.04 basierend auf Ihrer PHP-Version: 5.6,7.0,7.1,7.2,7.3
quelle