Kann mcrypt für PHP5 nicht bekommen

29

Ich habe das schon oft gemacht:

sudo aptitude install php5-mcrypt

sudo apache2ctl restart

aptitude sagt, dass mcrypt installiert ist. Ich habe es schon 3 Mal neu installiert. Ich habe Apache ungefähr 20 Mal neu gestartet, seit ich es installiert habe. Wenn ich mir phpInfo anschaue, sehe ich mcrypt nicht aufgelistet. Wenn ich versuche, meinen Code auszuführen, heißt es, dass die mcrypt-Funktion (pick one - any one) nicht existiert. mcrypt ist eindeutig nicht aktiviert.

Hat jemand eine Idee woran das liegen könnte? Ich weiß nicht, welche Teile wo sein sollen und wie das alles zusammenpassen soll.

Ich habe PHP 5.5.3 installiert

webDeveloperDave
quelle
Haben Sie PHP auch vom Paketmanager ( apt-get/ aptitude) aus installiert ? Das Paket php5-mcryptkann die Erweiterung nur für php.inidiejenigen konfigurieren, von denen es "weiß". Zweitens tue ich es jetzt nicht, wenn apache2ctldie Module neu geladen werden. Die "normale" Art, Apache neu zu starten, wäre so etwas wie sudo service apache2 restart. Drittens, wie ist PHP mit Ihrem Apache verbunden? Wenn Sie etwas wie (f) cgi oder php-fpm verwenden (im Gegensatz zu mod-php), müssen Sie PHP wahrscheinlich neu starten, zusätzlich zu Apache.
Henning Kockerbeck
Wir haben alles mit aptitude installiert. apache2ctl stoppt und startet Apache neu. Wir haben den Computer seit diesen Installationen mehrmals neu gestartet. Vertrauen Sie mir, wenn ich sage, dass Apache seit der Installation von php5-mcrypt "neu gestartet" wurde - ebenso wie PHP. PHP5 funktioniert gut als Apache-Modul - es ist eine in PHP geschriebene Website - also gehe ich davon aus, dass PHP als Apache-Modul installiert ist. Wenn ich zu / etc / apache2 / mods-enabled gehe, ist php5 in dieser Liste. Ich sehe mcrypt nicht in / etc / php5 / mods-available, aber wenn ich sudo aptitude search mcrypt mache, sehe ich 3 Dinge installiert: libmcypt4, mcrypt und php5-mcrypt - ????
WebDeveloperDave
Was php.inisteht in der Ausgabe von phpinfo(ca. 5. bis 7. Eintrag)? Es sollte eine Datei in sein /etc/php5/. mcryptWas passiert, wenn Sie in dieser Datei nach suchen ?
Henning Kockerbeck
Die php.ini befindet sich in /etc/php5/apache2/php.ini. Dort befindet sich ein Abschnitt mcrypt mit 2 Einstellungen - beide auskommentiert - mcrypt.algorithms_dir und mcrypt.modes_dir. lib / libmcrypt - diese Verzeichnisse existieren nicht. Dies ist, was mich zuerst auf die Tatsache aufmerksam gemacht hat, dass mcrypt möglicherweise nicht installiert wird, obwohl es von aptitude behauptet wird. Wenn ich sudo aptitude info mache, sagt mcrypt, dass der Paketstatus installiert ist - Version 2.6.8-1.3 - es sagt Konflikte: mcrypt - also, was sagt es? dass dieses Paket mit sich selbst in Konflikt steht? Gibt es eine bessere Möglichkeit, Benutzerinformationen zu verschlüsseln?
WebDeveloperDave
Sie müssen sich nicht um das mcryptPaket kümmern . Dies ist das Befehlszeilenprogramm, das libmcrypt verwendet, ebenso wie die PHP-Erweiterung. Sie müssen also sicherstellen, dass das Paket libmcrypt4installiert ist. Gibt es einen php.iniAusschnitt bei /etc/php5/conf.d/mcrypt.ini? Das sollte die lib laden. Wird dieses Snippet von PHP geladen (siehe phpinfo)? Haben Sie erneut versucht, Apache mit sudo service apache2 restartanstelle von neu zu starten apache2ctl?
Henning Kockerbeck

Antworten:

62

Versuche dies

sudo php5enmod mcrypt

sudo service apache2 restart
user229183
quelle
Hat gut funktioniert und der Symlink (über das Kopieren der ganzen Sache) ist +1 für mich. So aufgestimmt!
Stefano Mtangoo
4
Das hat bei mir funktioniert. Ich brauchte aber nicht den ersten Befehl (ln). Ich hatte keine mcrypt.ini im Ordner /etc/php5/apache/conf.d. Das Ausführen von sudo php4enmod mcrypt hat funktioniert. Datei dort jetzt. Server funktioniert !. Vielen Dank.
Peterept
1
Danke, es funktioniert gut. Aber ich möchte wissen, über den Befehl, dass Sie "sudo php5enmod mcrypt" verwendet haben .. Was ist das ..? Was ist der Zweck dieses Befehls ..?
Elavarasan
1
"sudo php5enmod mcrypt" erstellt einen Symlink im Verzeichnis "/etc/php5/conf.d" mit einer Prioritätsnummer (Standard 20), damit Sie ihn deinstallieren können, ohne die ini-Dateien mit "sudo php5dismod mcrypt"
Vizjerai
11

Ich hatte unter Ubuntu 13.10 ein ähnliches Problem. Beim Ausführen der Composer-Installation trat derselbe Fehler auf, der auf endete.

****Mcrypt PHP extension required.
Script php artisan clear-compiled handling the post-update-cmd event returned with an error

  [RuntimeException]  
  Error Output:****   

Ich habe installiert mcryptund php5-mcryptmit aptitude, und immer php -mnoch nicht mcryptals geladene Erweiterung angezeigt:

aptitude install mcrypt
aptitude install php5-mcrypt

Ich lief ein updatedbund dann locate mcrypt. Ich habe meine mcrypt.iniin gefunden /etc/php5/conf.d. Dennoch hatten alle anderen Erweiterungen (wie json) ihre INI-Dateien in /etc/php5/apache2/conf.dund /etc/php5/cli/conf.d. Diese beiden waren Links zu ../../mods.available.

Also, ich ziehe dann mcrypt.iniauf /etc/php5/available-modulesund legen Sie die Links:

cd /etc/php5/cli/conf.d
ln -s ../../mods-available/mcrypt.ini 20-mcrypt.ini

Und ähnlich für /etc/php5/apache2/conf.d.

Und voila, es zeigte sich in php -m!

user239289
quelle
Vielen Dank für diese Antwort. Hat mich total aussortiert. Obwohl ich /etc/php5/conf.d/mcrypt.ini nicht verschoben habe - habe ich einfach meine symbolischen Links so gesetzt, dass sie auf den Speicherort verweisen, der auch funktioniert hat und vermutlich dafür sorgt, dass zukünftige Updates für mcrypt automatisch geladen werden?
Alexander
2

Es fehlt anscheinend das ini-Snippet, das libmcrypt lädt, wenn PHP von Apache aufgerufen wird. Es sollte eine Datei /etc/php5/apache2/conf.d/mcrypt.inimit folgendem Inhalt vorhanden sein

; configuration for php MCrypt module
extension=mcrypt.so

Sie sollten in der Lage sein, es von den Konfigurationen anderer PHP-Integrationen wie /etc/php5/cli/conf.d/mcrypt.inioder zu kopieren /etc/php5/conf.d/mcrypt.ini, je nachdem, was auf Ihrem System installiert ist.

Henning Kockerbeck
quelle
2

Das mcrypt-Modul ist standardmäßig nicht aktiviert. Aktiviere das mcrypt Modul und starte Apache neu ( credit )

sudo php5enmod mcrypt
sudo service apache2 restart
Boinst
quelle
1

Nun, das ist es. Es sieht so aus, als ob wir manchmal auf der Suche nach dem verworrensten Weg sind, etwas so Einfaches wie 'enmod' zu tun. ) Wie Boinst sagt: sudo php5enmod mcrypt. Laden Sie dann Apache neu.

Maximo
quelle