Impossible d'obtenir mcrypt pour PHP5


29

Je l'ai fait plusieurs fois:

sudo aptitude install php5-mcrypt

sudo apache2ctl restart

aptitude indique que mcrypt est installé. Je l'ai déjà réinstallé 3 fois. J'ai redémarré apache environ 20 fois depuis que je l'ai installé. Quand je regarde phpInfo, je ne vois pas mcrypt répertorié. Lorsque j'essaie d'exécuter mon code, il indique que la fonction mcrypt (en choisir un - n'importe lequel) n'existe pas. mcrypt n'est clairement pas activé.

Quelqu'un at-il une idée de ce qui pourrait mal se passer? Je ne sais pas quelles pièces devraient être où et comment tout cela est censé s'emboîter.

J'ai installé PHP 5.5.3


Avez-vous également installé PHP à partir du gestionnaire de packages ( apt-get/ aptitude)? Le package php5-mcryptne peut configurer l'extension que pour php.iniles informations "connues". Deuxièmement, je ne sais pas maintenant si apache2ctlrecharge les modules. La façon «normale» de redémarrer Apache serait quelque chose comme ça sudo service apache2 restart. Troisièmement, comment PHP est-il connecté à votre Apache? Si vous utilisez quelque chose comme (f) cgi ou php-fpm (contrairement à mod-php), vous devrez probablement redémarrer PHP seul, en plus de redémarrer Apache.
Henning Kockerbeck du

Nous avons tout installé en utilisant aptitude. apache2ctl arrête et redémarre apache. Nous avons redémarré l'ordinateur plusieurs fois depuis ces installations. Faites-moi confiance quand je dis qu'apache a été "redémarré" depuis que nous avons installé php5-mcrypt - ainsi que PHP. PHP5 fonctionne bien comme module apache - c'est un site Web écrit en PHP - donc je suppose que PHP est installé comme module apache. Si je vais dans / etc / apache2 / mods-enabled, php5 figure dans cette liste. Je ne vois pas mcrypt dans / etc / php5 / mods-available mais si je fais la recherche d'aptitude sudo mcrypt, je vois 3 choses installées: libmcypt4, mcrypt et php5-mcrypt - ????
webDeveloperDave

Lequel php.iniest répertorié dans la sortie de phpinfo(environ 5e à 7e entrée)? Ce devrait être un fichier /etc/php5/. Si vous recherchez dans ce fichier mcrypt, qu'est-ce qui se passe?
Henning Kockerbeck du

php.ini est dans /etc/php5/apache2/php.ini, il y a une section mcrypt avec 2 paramètres - tous deux commentés - mcrypt.algorithms_dir et mcrypt.modes_dir les commentaires au-dessus d'eux disent que la valeur par défaut est / usr / local / lib / libmcrypt - ces répertoires n'existent pas. C'est ce qui m'a tout d'abord fait comprendre que mcrypt n'est peut-être pas installé bien qu'aptitude le dise. Si je fais des informations d'aptitude sudo, mcrypt indique que l'état du package est installé - version 2.6.8-1.3 - il indique Conflits: mcrypt - alors qu'est-ce qu'il dit? que ce paquet est en conflit avec lui-même? Existe-t-il un meilleur moyen de crypter les informations utilisateur?
webDeveloperDave

Vous n'avez pas besoin de vous soucier de l' mcryptemballage. C'est le programme en ligne de commande qui utilise libmcrypt, tout comme l'extension PHP. Vous devez donc vous assurer que le package libmcrypt4est installé. Y a-t-il un php.iniextrait à /etc/php5/conf.d/mcrypt.ini? Cela devrait charger la lib. Cet extrait est-il chargé par PHP (voir phpinfo)? Encore une fois, avez-vous essayé de redémarrer Apache avec sudo service apache2 restartau lieu de apache2ctl?
Henning Kockerbeck

Réponses:


62

Essaye ça

sudo php5enmod mcrypt

sudo service apache2 restart

A bien fonctionné et le lien symbolique (sur toute la copie) est +1 pour moi. Tellement voté!
Stefano Mtangoo

4
Cela a fonctionné pour moi. Mais je n'avais pas besoin de la première commande (ln). Je n'avais pas mcrypt.ini dans le dossier /etc/php5/apache/conf.d. L'exécution de sudo php4enmod mcrypt a fonctionné. Classez-y maintenant. Le serveur fonctionne!. Merci beaucoup.
peterept

1
Merci son bon travail. Mais je veux connaître la commande que vous avez utilisée "sudo php5enmod mcrypt" .. Qu'est-ce que c'est ..? Quel est le but d'utiliser cette commande ..?
Elavarasan

1
"sudo php5enmod mcrypt" créera un lien symbolique dans le répertoire "/etc/php5/conf.d" avec un numéro de priorité (20 par défaut) afin que vous puissiez le désinstaller sans modifier les fichiers ini avec "sudo php5dismod mcrypt"
Vizjerai

11

J'ai eu un problème similaire sur Ubuntu 13.10. Lors de l'exécution de l'installation de composer, il a produit la même erreur, se terminant par.

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

  [RuntimeException]  
  Error Output:****   

J'ai installé mcryptet php5-mcryptavec aptitude, et php -mne s'affiche toujours pas mcryptcomme une extension chargée:

aptitude install mcrypt
aptitude install php5-mcrypt

J'ai couru un updatedb, puis locate mcrypt. J'ai trouvé mon mcrypt.inidans /etc/php5/conf.d. Pourtant, toutes les autres extensions (comme json) avaient leurs fichiers .ini dans /etc/php5/apache2/conf.det /etc/php5/cli/conf.d. Ces deux étaient des liens vers ../../mods.available.

Donc, je suis ensuite passé mcrypt.inià /etc/php5/available-modules, et j'ai défini les liens:

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

Et de même pour /etc/php5/apache2/conf.d.

Et le tour est joué php -m!


Merci beaucoup pour cette réponse. M'a complètement réglé. Bien que je n'aie pas déplacé /etc/php5/conf.d/mcrypt.ini - je viens de définir mes liens symboliques pour pointer vers cet emplacement qui a également fonctionné et garantira probablement que les futures mises à jour de mcrypt seront automatiquement chargées?
alexleonard

2

On dirait que l'extrait ini qui charge libmcrypt lorsque PHP est appelé par Apache est manquant. Il devrait y avoir un fichier appelé /etc/php5/apache2/conf.d/mcrypt.iniavec le contenu suivant

; configuration for php MCrypt module
extension=mcrypt.so

Vous devriez pouvoir le copier à partir des autres configurations de l'intégration PHP comme /etc/php5/cli/conf.d/mcrypt.iniou /etc/php5/conf.d/mcrypt.ini, selon ce qui est installé sur votre système.


2

Le module mcrypt n'est pas activé par défaut. Activez le module mcrypt puis redémarrez apache ( crédit )

sudo php5enmod mcrypt
sudo service apache2 restart

1

Eh bien, c'est ça. On dirait que parfois nous sommes à la recherche de la manière la plus embrouillée de faire quelque chose d'aussi simple que «enmod»; ) Comme Boinst dit: sudo php5enmod mcrypt. Rechargez ensuite apache.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.