Domanda

Nota: le librerie di supporto MCrypt dipendono dal non sono stati aggiornati negli anni e MCrypt non dovrebbe più essere considerato un metodo praticabile o sicuro di cifratura dei dati. Cosa c'è di più, MCrypt è stato deprecato in PHP 5, e rimosso interamente in PHP 7. Se si dispone di alcun codice che viene eseguito MCrypt si dovrebbe refactoring di utilizzare una libreria di crittografia più moderno.


Qualcuno sa il motivo per cui questo messaggio di errore:? Display (Call to undefined function mcrypt_encrypt() ) quando si esegue il seguente codice seguente

Mi sto perdendo alcuni passaggi forse qualsiasi ambiente in PHP che ho da fare prima di questo codice può lavorare?

$key = 'password to (en/de)crypt';
$string = 'string to be encrypted';

$test = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key),
            $string, MCRYPT_MODE_CBC, md5(md5($key)));
È stato utile?

Soluzione

Quello che aveva lavorato per me con PHP versione 5.2.8, è stato quello di aprire php.ini e permettere l'estensione php_mcrypt.dll rimuovendo il ;, vale a dire la modifica:

;extension=php_mcrypt.dll a extension=php_mcrypt.dll

Altri suggerimenti

Se si è recentemente aggiornato a Ubuntu 14.04 qui è la soluzione a questo problema:

$ sudo mv /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
$ sudo php5enmod mcrypt
$ sudo service apache2 restart

Per le finestre

;extension=php_mcrypt.dll to extension=php_mcrypt.dll 
 then restart your apache server

Per Redhat

sudo yum install php55-mcrypt //if php5.5
sudo yum install php-mcrypt //if less than 5.4
sudo service httpd restart //if apache 2.4
sudo /etc/init.d/httpd restart //if apache 2.2 or less

Per Ubuntu

sudo apt-get install php5-mcrypt
sudo service apache2 restart //if server not reloaded automatically 

Non funziona ancora?

  

sudo php5enmod mcrypt && sudo service apache2 restart

Non hai la libreria mcrypt installato.

http://www.php.net/manual/en/ mcrypt.setup.php per ulteriori informazioni.

Se siete su hosting condiviso, si può chiedere al vostro provider di installarlo.


In OSX si può facilmente installare mcrypt tramite homebrew

brew install php54-mcrypt --without-homebrew-php

Poi aggiungere questa riga a /etc/php.ini.

extension="/usr/local/Cellar/php54-mcrypt/5.4.24/mcrypt.so"

Se si sta utilizzando PHP 7.2 o verso l'alto:

  

Questa funzione è sconsigliata in PHP 7.1.0, e rimossi in PHP 7.2.0.

fonte: http://php.net/manual/en/function. mcrypt-encrypt.php

Quindi, si deve sostituire il codice php e trovare una soluzione senza mcrypt.

In alternativa, ho appena scoperto, è comunque possibile utilizzare mcrypt in PHP 7.2.0, ma è necessario installarlo come Community Library PHP Extension. ( https://pecl.php.net/ )

distribuzioni Su Debian / Ubuntu Linux:

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

quindi:

sudo pecl install mcrypt-1.0.1

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

Sotto Ubuntu ho avuto il problema e risolto con

$ sudo apt-get install php5-mcrypt
$ sudo service apache2 reload

su Ubuntu 14.10:

Installa modulo mcrypt

sudo apt install php5-mcrypt

Abilita mcrypt modulo sulla apache2

sudo a2enmod mcrypt

Ricarica modulo di configurazione

sudo service apache2 restart

In Linux Mint 17.1 Rebecca - Chiama per undefined function mcrypt_create_iv ...

risolto aggiungendo la seguente riga al php.ini

extension=mcrypt.so

Dopo che un

service apache2 restart

risolto ...

Ho avuto lo stesso problema per PHP 7 versione di mcrypt mancante.

Questo ha funzionato per me.

sudo apt-get update
sudo apt-get install mcrypt php7.0-mcrypt
sudo apt-get upgrade
sudo service apache2 restart (if needed)

È mcrypt abilitato? È possibile utilizzare phpinfo() per vedere se è.

Ancora una cosa: se si sta servendo PHP tramite un web server come Apache, provare a riavviare il server web. In questo modo "reset" tutti i moduli PHP che potrebbero essere presenti, attivando la nuova configurazione.

Supponendo che si sta utilizzando Debian Linux (sto usando Linux Mint 12, problema era sul server di Ubuntu 12.04.1 LTS I ssh'ed in.)

Suggerisco di prendere consigli @dkamins e fare in modo che avete mcrypt installato e attivo sul installare il PHP5. Utilizzare "sudo apt-get install php5-mcrypt" per installare. Le mie note sotto.

Usando la versione PHP PHP Version 5.3.10-1ubuntu3.4, se phpinfo open () come suggerito da @ John Conde, che si fa con la creazione di file di test sul server web (ad esempio, creare lo stato pagina testphp.php con solo il contenuto "" ovunque accessibile sul server browser tramite)

ho trovato alcuna presenza dello stato abilitato o disabilitato nella pagina di stato quando viene aperto in browser. Quando poi ho aperto il file php.ini, citato da @Anthony Forloney, pensando di togliere il commento ;extension=php_mcrypt.dll to extension=php_mcrypt.dll

I attivata che avanti e indietro e riavviato Apache (sto correndo Apache2 ed è possibile riavviare nella mia installazione con sudo /etc/init.d/apache2 restart o quando si è in quella directory appena sudo restart credo) con il cambiamento e senza cambiamento, ma tutti non andare. Ho seguito il consiglio @dkamins e sono andato per installare il pacchetto con "sudo apt-get install php5-mcrypt" e apache poi riavviato come sopra. Poi il mio errore è stato andato e la mia applicazione ha funzionato bene.

Se si utilizza php5-fpm ricordo di riavviarlo, dopo l'installazione di mcrypt

servizio php5-fpm restart

Se si utilizza Ubuntu 14.04 qui è la soluzione a questo problema:

apt-get install php5-mcrypt

In primo luogo verificare php5-mcryp è già installato

Se installato, basta eseguire questo comando o due installare ed eseguire questo due comando

$ sudo php5enmod mcrypt
$ sudo service apache2 restart

Spero che funzionerà.

per Linux based (Fedora)

yum -y install php-mcrypt

Attiva il modulo aggiungendo: 'extension = mcrypt.so' a php.ini. (/Etc/php.ini)

systemctl restart httpd.service

Fatto!

Per me ha aiutato a mcrypt disinstallazione con:

sudo apt-get purge php5-mcrypt

e semplicemente reinstallarlo:

sudo apt-get install php5-mcrypt

E non dimenticate di riavviare apache come descritto sopra.

Non so come e perché questo era diverso nel mio caso (usando una macchina virtuale con php55 provisioning), ma forse questo aiuterà qualcun altro. Ho anche avuto questo problema con alcuni altri moduli come xcache ...

Controlla e installare php5-mcrypt:

sudo apt-get install php5-mcrypt
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top