webentwicklung-frage-antwort-db.com.de

kann mcrypt nicht finden => Aufruf an undefinierte Funktion Laravel\mcrypt_create_iv ()

Beim Versuch, Laravel einzurichten und diesen Fehler immer wieder zu treffen. Ich habe mcrypt durch brew installiert und es befindet sich in/usr/local/Cellar. Irgendwelche Gedanken? Es wird auch nicht im Terminalbefehl php -m angezeigt, wenn das wichtig ist. Ich verwende Mountaion Lion mit dem nativen Webserver von Macs.

42
coryj

Sie müssen es ebenfalls in Ihrer php.ini-Datei aktivieren und Apache wahrscheinlich neu starten.

In php.ini finden Sie ;mcrypt.so und entfernen den ; daraus.

Oder, wenn es nicht da ist, einfach irgendwo mcrypt.so hinzufügen.

Auch die Salt-Option wurde ab PHP 7.0.0 nicht mehr unterstützt. Es wird jetzt bevorzugt, einfach das standardmäßig erzeugte Salz zu verwenden.

37
Deinumite

Ubuntu oder Linux-Benutzer, die auf Debian basieren, können das erforderliche Paket mit apt-get installieren:

Sudo apt-get install php5-mcrypt

Denken Sie daran, den Webserver anschließend neu zu starten:

Sudo service Apache2 restart

Wenn es immer noch nicht funktioniert, versuchen Sie, die Konfigurationsdatei mit dem entsprechenden Konfigurationsordner für den Webserver zu verknüpfen. Vielen Dank an dave1010 für diesen Hinweis in den Kommentaren.

Sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/Apache2/conf.d/   # for Apache
Sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/cli/conf.d/       # for CLI

Und starten Sie den Webserver erneut:

Sudo service Apache2 restart

Wenn Sie noch nicht funktionieren, benötigen Sie möglicherweise auch die Zeile, die @RahulPrasad mit php5enmod mcrypt angezeigt hat.

65
Sophy

Sudo php5enmod mcrypt && Sudo service Apache2 restart ausprobieren

28
Rahul Prasad

Sie haben mcrypt installiert, als Sie tatsächlich das php56-mcrypt php-Modul wollten.

Sie haben in Ihrer Frage angegeben, dass Sie mcrypt in /usr/local/Cellar installiert sehen und dass Sie OSX verwenden. Der einfachste Weg, das mcrypt PHP -Modul unter OSX mit Homebrew zu installieren, ist also:

// assuming you have php56
brew install php56-mcrypt

Wenn Homebrew das richtige Paket nicht finden kann, müssen Sie möglicherweise auf die PHP - Repositorys von GitHub tippen:

brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php

Wenn Sie jetzt den Befehl brew search mcrypt ausgeben, sollten Sie etwa Folgendes sehen:

libtomcrypt   mcrypt   php53-mcrypt   php54-mcrypt   php55-mcrypt   php56-mcrypt

Mehrere andere Poster haben die Notwendigkeit erwähnt, Ihre php.ini-Datei zu bearbeiten. Dies ist nicht erforderlich, da Homebrew das Modul für Sie aktivieren wird. Die Konfigurationsdatei wird unter /usr/local/etc/php/5.6/conf.d/ext-mcrypt.ini abgelegt.

20
darronz

Sie haben nicht die Erweiterung mcrypt PHP installiert.

Bei einem Mac habe ich folgende Anweisungen befolgt: mcrypt bei Mac 10.7 oder 10.8 .

Sie sehen wie viel aus, sind es aber nicht, es ist sehr leicht zu folgen, wenn es funktioniert!

2
duality_

Nur ein Hinweis für Benutzer, die kürzlich ein Upgrade auf PHP 7 durchgeführt haben - Die MCRYPT-Bibliothek wurde veraltet . Wenn Sie auf PHP 7 aktualisiert haben und jetzt diesen Fehler sehen, ist dies der Grund. Sie sollten zu einer alternativen Bibliothek wechseln, einige Alternativen werden in diesem Thread erwähnt.

1
James Paterson

Sie haben möglicherweise mycrypt installiert, aber das Modul php_mcrypt nicht installiert/aktiviert.

1
Andrew

Gehen Sie zum CLI-Ordner in Ihrer PHP-Installation und suchen Sie dort nach php.ini und aktivieren Sie mcrypt. Das Terminal verwendet manchmal eine andere php.ini, die sich normalerweise im CLI-Ordner befindet.

0
Kris

Ich habe php und mcrypt mit Homebrew installiert, aber ich habe diesen Fehler immer noch erlebt, nachdem ich brew update einige Male gemacht hatte. Ich denke, mein Setup hat sich im Laufe der Zeit etwas verzerrt.

Es stellte sich heraus, dass mein PHP aus /private/etc/php.ini, nicht /usr/local/etc/php/5.4/php.ini konfiguriert wurde, wie Homebrew empfiehlt. Mcrypt wird nicht einmal aus /usr/local/etc/php/5.4/ext-mcrypt.ini aufgenommen, was nicht viel Sinn macht, wenn man bedenkt, dass php -i dies für mich erzeugt:

Configuration File (php.ini) Path => /usr/local/etc/php/5.4
Loaded Configuration File => /usr/local/etc/php/5.4/php.ini
Scan this dir for additional .ini files => /usr/local/etc/php/5.4/conf.d
Additional .ini files parsed => /usr/local/etc/php/5.4/conf.d/ext-mcrypt.ini

Meine Lösung:

  1. Bearbeiten Sie /private/etc/php.ini als Superuser
  2. Fügen Sie extension="/usr/local/Cellar/php54-mcrypt/5.4.28/mcrypt.so" hinzu und speichern Sie
  3. Apache neu starten mit Sudo apachectl restart
0
gmeben

Das hat mir endlich geholfen:

brew reinstall --with-homebrew-curl --with-httpd php56
brew reinstall --build-from-source php56-mcrypt

Ich musste auch Sudo chmod 777 /usr/local/etc/php/5.6/conf.d tun, weil ich Fehler bekam, als der zweite brew reinstall versuchte, den ext-mcrypt.ini zu diesem Verzeichnis hinzuzufügen.

0
Eric Norcross