Impossibile ottenere mcrypt per PHP5


29

L'ho fatto molte volte:

sudo aptitude install php5-mcrypt

sudo apache2ctl restart

aptitude afferma che mcrypt è installato. L'ho reinstallato 3 volte già. Ho riavviato Apache circa 20 volte da quando l'ho installato. Quando guardo phpInfo, non vedo elencato mcrypt. Quando provo ad eseguire il mio codice, dice che la funzione mcrypt (sceglierne uno - uno qualsiasi) non esiste. chiaramente mcrypt non è abilitato.

Qualcuno ha idea di cosa potrebbe essere sbagliato? Non so quali pezzi dovrebbero essere dove e come tutto questo dovrebbe combaciare.

Ho installato PHP 5.5.3


Hai installato PHP anche dal gestore dei pacchetti ( apt-get/ aptitude)? Il pacchetto php5-mcryptpuò solo configurare l'estensione per php.ini"sa" di. In secondo luogo, non lo faccio ora se apache2ctlricarica i moduli. Il modo "normale" di riavviare Apache sarebbe qualcosa di simile sudo service apache2 restart. Terzo, in che modo PHP è collegato ad Apache? Se usi qualcosa come (f) cgi o php-fpm (in contrasto con mod-php), probabilmente dovrai riavviare PHP da solo, oltre a riavviare Apache.
Henning Kockerbeck,

Abbiamo installato tutto usando aptitude. apache2ctl arresta e riavvia apache. Abbiamo riavviato il computer più volte da queste installazioni. Fidati di me quando dico che apache è stato "riavviato" da quando abbiamo installato php5-mcrypt - così come PHP. PHP5 funziona perfettamente come modulo apache - è un sito Web scritto in PHP - quindi suppongo che PHP sia installato come modulo apache. Se vado in / etc / apache2 / php5 abilitato mods è in quella lista. Non vedo mcrypt in / etc / php5 / mods-available ma se eseguo sudo aptitude search mcrypt vedo 3 cose installate: libmcypt4, mcrypt e php5-mcrypt - ????
webDeveloperDave,

Quale php.iniè elencato nell'output di phpinfo(circa dalla 5a alla 7a voce)? Dovrebbe essere un file in /etc/php5/. Se cerchi quel file mcrypt, cosa ti viene in mente?
Henning Kockerbeck,

php.ini è in /etc/php5/apache2/php.ini c'è una sezione mcrypt lì con 2 impostazioni - entrambe commentate - mcrypt.algorithms_dir e mcrypt.modes_dir i commenti sopra di loro dicono che l'impostazione predefinita è / usr / local / lib / libmcrypt - quelle directory non esistono. Questo è ciò che mi ha fatto capire per la prima volta che mcrypt potrebbe non essere installato anche se aptitude dice che lo è. Se faccio sudo aptitude info mcrypt dice che lo stato del pacchetto è installato - versione 2.6.8-1.3 - dice Conflicts: mcrypt - quindi cosa sta dicendo? che questo pacchetto è in conflitto con se stesso? Esiste un modo migliore per crittografare le informazioni utente?
webDeveloperDave,

Non devi preoccuparti del mcryptpacchetto. Questo è il programma da riga di comando che utilizza libmcrypt, così come l'estensione PHP. Quindi è necessario assicurarsi che il pacchetto libmcrypt4sia installato. C'è uno php.inisnippet su /etc/php5/conf.d/mcrypt.ini? Quello dovrebbe caricare la lib. Quello snippet è stato caricato da PHP (vedi phpinfo)? Ancora una volta, hai provato a riavviare Apache con sudo service apache2 restartinvece di apache2ctl?
Henning Kockerbeck,

Risposte:


62

Prova questo

sudo php5enmod mcrypt

sudo service apache2 restart

Ha funzionato bene e il collegamento simbolico (oltre a copiare tutto) è +1 per me. Così votato!
Stefano Mtangoo,

4
Questo ha funzionato per me. Ma non avevo bisogno del primo comando (ln). Non avevo mcrypt.ini nella cartella /etc/php5/apache/conf.d. In esecuzione sudo php4enmod mcrypt ha funzionato. File lì ora. Il server funziona !. Molte grazie.
peterept,

1
Grazie funziona bene. Ma voglio sapere del comando che hai usato "sudo php5enmod mcrypt" .. Cos'è questo ..? Qual è lo scopo di usare questo comando ...?
Elavarasan,

1
"sudo php5enmod mcrypt" creerà un collegamento simbolico nella directory "/etc/php5/conf.d" con un numero di priorità (predefinito 20) in modo da poterlo disinstallare senza modificare i file ini con "sudo php5dismod mcrypt"
Vizjerai

11

Ho avuto un problema simile su Ubuntu 13.10. Dopo aver eseguito l'installazione del compositore, ha prodotto lo stesso errore, terminando con.

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

  [RuntimeException]  
  Error Output:****   

Ho installato mcrypte php5-mcryptcon aptitude e php -mnon ho ancora mostrato mcryptcome estensione caricata:

aptitude install mcrypt
aptitude install php5-mcrypt

Ho corso un updatedb, e poi locate mcrypt. Ho trovato il mio mcrypt.iniin /etc/php5/conf.d. Eppure tutte le altre estensioni (come json) avevano i loro file .ini in /etc/php5/apache2/conf.de /etc/php5/cli/conf.d. Entrambi erano collegamenti a ../../mods.available.

Quindi, sono passato mcrypt.inia /etc/php5/available-modulese ho impostato i collegamenti:

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

E allo stesso modo per /etc/php5/apache2/conf.d.

E voilà, si è presentato in php -m!


Grazie mille per questa risposta. Mi ha completamente risolto. Anche se non ho spostato /etc/php5/conf.d/mcrypt.ini - ho appena impostato i miei collegamenti simbolici per puntare a quella posizione che ha funzionato e presumibilmente assicurerò che i futuri aggiornamenti di mcrypt vengano caricati automaticamente?
alexleonard,

2

Sembra che lo snippet ini che carica libmcrypt quando PHP viene chiamato da Apache è mancante. Dovrebbe esserci un file chiamato /etc/php5/apache2/conf.d/mcrypt.inicon il seguente contenuto

; configuration for php MCrypt module
extension=mcrypt.so

Dovresti essere in grado di copiarlo dalle vonfigurazioni dell'altra integrazione di PHP come /etc/php5/cli/conf.d/mcrypt.inio /etc/php5/conf.d/mcrypt.ini, a seconda di ciò che è installato sul tuo sistema.


2

Il modulo mcrypt non è abilitato per impostazione predefinita. Abilita il modulo mcrypt e quindi riavvia apache ( credito )

sudo php5enmod mcrypt
sudo service apache2 restart

1

Bene, eccolo. A volte sembra che siamo alla ricerca del modo più complicato di fare qualcosa di semplice come "enmod"; ) Come Boinst dice: sudo php5enmod mcrypt. Quindi ricaricare Apache.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.