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?
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.
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
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
- PHP 7.1 veraltetes mcrypt und 7.2 hat die mcrypt-Erweiterung vollständig entfernt
- Laravel 5.1 und höher hat die Notwendigkeit von mcrypt beseitigt
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.
Für diejenigen, die XAMPP 1.7.3 und Mac verwenden
which php
Ein./usr/bin/php
steht, fahren Sie mit 3 fort.Sudo nano ~/.bash_profile
ein (oder Sudo vim ~/.bash_profile
, wenn Sie wissen, wie man es verwendet)export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
eincd ~
. .bash_profile
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.
Für Benutzer ohne MAMP oder XAMPP unter OSX (mit installiertem Homebrew):
brew install homebrew/php/php56-mcrypt
Prost!
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.
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
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
Für Ubuntu versuchen Sie diese 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 !
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
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
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:
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
Nur für Yumers,
yum install php-mcrypt
service httpd restart
chown -R Apache:apache apppath
Vielleicht brauchst du install remi repo
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
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.
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!
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.
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.
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.
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.
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
- Du solltest den MAMP 5.6.10 Pfad bekommen5.6.10 ist die Version von PHP, die Sie in Ihrem MAMP festgelegt haben.
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
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
$ 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.
Sudo PHP installieren mcrypt
Sudo php5enmod mcrypt
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