web-dev-qa-db-fra.com

phpenmod mcrypt et phpenmod mbstring renvoient des erreurs

J'utilise un environnement serveur minimal d'ubuntu16.04.1, Apache2, MySQL et PHP 7.0.8.1. J'ai installem AMP via: apt-get install lamp-server^.

J'ai aussi installé PHPmyadmin manuellement via:

cd /var/www/html
wget https://files.phpmyadmin.net/phpMyAdmin/4.6.5.2/phpMyAdmin-4.6.5.2-all-languages.Zip
find ./ -type f -name '*phpMyAdmin*.Zip' -exec unzip {} \; # We can also do unzip \*phpMyAdmin*.Zip ...
find ./ -type d -name 'phpMyAdmin-*' -exec mv {} phpmyadmin \;

PHPmyadmin est démarré mais pour l'utiliser pleinement, autant que je sache, il faut aussi:

phpenmod mcrypt
phpenmod mbstring

Pourtant, ces erreurs retournent respectivement:

Module mcrypt ini file doesn't exist under /etc/php/7.0/mods-available

Module mbstring ini file doesn't exist under /etc/php/7.0/mods-available

Je n'ai jamais eu ces erreurs avant. Ces modules sont-ils redondants pour PHPmyadmin dans les versions actuelles ou non installés via apt-get install?

2
JohnDoea

Installez-les d'abord:

Sudo apt install php7.0-mcrypt && Sudo apt install php7.0-mbstring

Puis activez-les avec:

Sudo a2enmod mcrypt
Sudo a2enmod mbstring

Mettre à jour

D'après des recherches approfondies, je crois qu'il existe un bogue empêchant votre php cli de bien fonctionner avec php mcrypt.

La source:

Impossible d'utiliser PHP extension Mcrypt dans Ubuntu 13.10 (Nginx, PHP-FPM)

php ne fonctionne pas bien sur Ubuntu 13.10 et mcrypt est manquant dans phpmyadmin

Pour confirmer que mcrypt est enabled dans Apache, procédez comme suit:

  1. Créez un fichier php appelé info.php y placez ce code:

    <?php echo phpinfo(); ?>
    
  2. Mettez le fichier dans /var/www/html ou votre racine du serveur

  3. Accédez-y à partir du navigateur, par exemple, IP/info.php ou localhost/info.php

  4. Regardez à la sortie et vous constaterez que mcrypt and mbstring sont activés

    enter image description here

    Comme vous pouvez le voir, il est activé dans Apache, mais inaccessible à partir de php CLI d'où les messages d'erreur.

  5. Pour confirmer son fonctionnement [comme j'ai ce problème aussi] j'ai fait ce qui suit:

    • installé prestashop application, et puisque l'un des conditions de prestashop est php mcrypt , il aurait renvoyé une erreur et refusé de continuer si mcrypt n'était pas activé sur Apache.

Une simple mise en fonction de votre si --- page d'information Apache affiche ces modules tels qu'ils sont activés. L'erreur vue est le résultat de php CLI ayant des problèmes avec mcrypt ​​qui a été noté comme étant un bogue. Vu dans les versions précédentes de php mais présent dans php 7

9
George Udosen

J'ai eu des problèmes avec les solutions ci-dessus, mais j'ai trouvé ceci:

https://www.techrepublic.com/article/how-to-install-mcrypt-for-php-7-2/

Essentiellement, construisez-le vous-même:

Sudo apt-get -y install gcc make autoconf libc-dev pkg-config
Sudo apt-get -y install php7.2-dev
Sudo apt-get -y install libmcrypt-dev

Une fois les dépendances installées, vous pouvez installer mcrypt avec la commande suivante:

Sudo pecl install mcrypt-1.0.1

A partir de là, j'ai eu besoin d'ajouter:

 /etc/php/7.2/mods-available/mcrypt.ini

Qui ressemblait à ceci:

; configuration for php mcrypt module
; priority=20
extension=mcrypt.so

Ensuite

Sudo phpenmod mcrypt
Sudo systemctl restart Apache2.service
3
theINtoy

Si les deux sont installés et que l'erreur persiste, essayez de créer un lien symbolique vers les fichiers ini dans mods-available

Voici comment faire:

Sudo ln -s /etc/php7/conf.d/mcrypt.ini /etc/php/7.0/mods-available/mcrypt.ini

Sudo ln -s /etc/php7/conf.d/mbstring.ini /etc/php/7.0/mods-available/mbstring.ini
2
Arduino_Sentinel