PHP5 için mcrypt alınamıyor


29

Bunu birçok kez yaptım:

sudo aptitude install php5-mcrypt

sudo apache2ctl restart

yetenek mcrypt yüklü diyor. Zaten 3 kez yeniden yükledim. Apache'yi kurduğumdan bu yana yaklaşık 20 kez yeniden başlattım. PhpInfo'ya baktığımda, listelenen mcrypt'u göremiyorum. Kodumu çalıştırmaya çalıştığımda, mcrypt işlevinin (birini seç - birini seç) bulunmadığını söylüyor. mcrypt açıkça etkin değil.

Neyin yanlış olabileceği hakkında bir fikri olan var mı? Hangi parçaların nerede ve nasıl bir araya getirilmesi gerektiğini bilmiyorum.

PHP 5.5.3'ü kurdum


PHP'yi de paket yöneticisinden ( apt-get/ aptitude) yüklediniz mi? Paket php5-mcrypt, uzantıyı yalnızca php.ini"bildiği" s için yapılandırabilir . İkincisi, şimdi apache2ctlmodülleri yeniden yüklüyorsanız, şimdi yapmıyorum . Apache'yi yeniden başlatmanın "normal" yolu, bunun gibi bir şey olurdu sudo service apache2 restart. Üçüncüsü, PHP Apache'nize nasıl bağlı? (F) cgi veya php-fpm (mod-php aksine) gibi bir şey kullanırsanız, muhtemelen Apache'yi yeniden başlatmak için PHP'yi kendi kendine yeniden başlatmanız gerekir.
Henning Kockerbeck

Her şeyi yetenek kullanarak kurduk. apache2ctl durur ve apache'yi yeniden başlatır. Bu yüklemelerden bu yana bilgisayarı birkaç kez yeniden başlattık. PHP'nin yanı sıra, php5-mcrypt programını yüklediğimizden beri apache'nin "yeniden başlatıldığını" söylediğimde bana güven. PHP5 bir apache modülü olarak çalışıyor - bu PHP'de yazılmış bir web sitesi - bu yüzden PHP'nin bir apache modülü olarak kurulu olduğunu varsayıyorum. / Etc / apache2 / mods etkin php5 'e gidersem bu listede var. Ben / etc / php5 / mods-kullanılabilir mcrypt görmüyorum ama eğer sudo yetenek arama mcrypt sundu 3 yüklü şeyler görüyorum: libmcypt4, mcrypt ve php5-mcrypt - ????
webDeveloperDave

Hangisi php.iniçıkışta listelenmiştir phpinfo(yaklaşık 5 ila 7. giriş)? İçinde bir dosya olmalı /etc/php5/. Eğer bu dosyayı ararsanız mcryptne gelir?
Henning Kockerbeck

php.ini /etc/php5/apache2/php.ini dosyasında 2 ayar bulunan bir mcrypt bölümü var - ikisi de yorumladı - mcrypt.algorithms_dir ve mcrypt.modes_dir üstlerindeki yorumların varsayılan / usr / local / olduğunu söylüyor lib / libmcrypt - bu dizinler mevcut değil. Bu, ilk önce, yetenekli olduğunu söylemesine rağmen, Mcrypt'ın yüklenemeyebileceği gerçeğine dair ipucu verdi. Ben sudo yetenek bilgisi yaparsam mcrypt paket durumu yüklü olduğunu söylüyor - sürüm 2.6.8-1.3 - Çatışmalar: mcrypt diyor - peki ne diyor? Bu paketin kendisiyle çakıştığını? Kullanıcı bilgilerini şifrelemek için daha iyi bir yolu var mı?
webDeveloperDave

mcryptPaketle ilgilenmene gerek yok . PHP uzantısı gibi libmcrypt kullanan komut satırı programıdır. Bu yüzden paketin libmcrypt4kurulu olduğundan emin olmalısınız . php.iniKısmında bir snippet var mı /etc/php5/conf.d/mcrypt.ini? Bu lib'i yüklemelidir. Bu kod parçası PHP tarafından yüklendi phpinfomi (bkz. )? Yine sudo service apache2 restartyerine Apache'yi yeniden başlatmayı denediniz apache2ctlmi?
Henning Kockerbeck

Yanıtlar:


62

Bunu dene

sudo php5enmod mcrypt

sudo service apache2 restart

İyi çalıştı ve sembolik bağlantı (her şeyi kopyalamanın üzerinde) benim için + 1'dir. Öyleyse oy verildi!
Stefano Mtangoo

4
Bu benim için çalıştı. Ama ilk komuta ihtiyacım yoktu (ln). /Etc/php5/apache/conf.d klasöründe hiç mcrypt.ini yoktu. Çalışan sudo php4enmod mcrypt çalıştı. Şimdi oraya dosyala. Sunucu çalışıyor! Çok teşekkürler.
peter,

1
Teşekkürler iyi çalışıyor. Ama "sudo php5enmod mcrypt" kullandığınız komut hakkında bilgi istiyorum .. Bu nedir ..? Bu komutu kullanmanın amacı nedir ..?
Elavarasan

1
"sudo php5enmod mcrypt", "/etc/php5/conf.d" dizininde öncelik numarası olan bir varsayılan bağlantı (varsayılan 20) oluşturacaktır, böylece "sudo php5dismod mcrypt" ile ini dosyalarını değiştirmeden kaldırabilirsiniz.
Vizjerai

11

Ubuntu 13.10'da da benzer bir problem yaşadım. Besteci çalıştırmanın ardından, biten aynı hatayı üretti.

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

  [RuntimeException]  
  Error Output:****   

Ben mcryptve php5-mcryptyetenek ile kurdum ve hala yüklü bir uzantı olarak php -mgöstermedim mcrypt:

aptitude install mcrypt
aptitude install php5-mcrypt

Bir koştum updatedbve sonra locate mcrypt. Ben buldum mcrypt.iniin /etc/php5/conf.d. Yine de tüm diğer uzantıların (json gibi) .ini dosyaları /etc/php5/apache2/conf.dve içerisinde /etc/php5/cli/conf.d. Bu ikisi de bağlantılardı ../../mods.available.

Yani, daha sonra hareket mcrypt.inietmek /etc/php5/available-modulesbağlantıları ve ayarlayın:

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

Ve benzer şekilde /etc/php5/apache2/conf.d.

Ve işte, geldi php -m!


Bu cevap için çok teşekkürler. Tamamen beni sıraladı. Hareket etmeme rağmen /etc/php5/conf.d/mcrypt.ini - Sadece sembolik bağlarımı, aynı zamanda çalışan ve muhtemelen mcrypt için gelecekteki güncellemelerin otomatik olarak yüklenmesini sağlayacak olan yere işaret edecek şekilde ayarladım.
alexleonard

2

PHP Apache tarafından çağrıldığında libmcrypt yükleyen ini snippet'ine benziyor. /etc/php5/apache2/conf.d/mcrypt.iniAşağıdaki içeriğe sahip bir dosya olmalı

; configuration for php MCrypt module
extension=mcrypt.so

Sisteminizde yüklü olana bağlı olarak , diğer PHP entegrasyonunun von ortrasyonlarından /etc/php5/cli/conf.d/mcrypt.iniveya benzerlerinden kopyalayabilmeniz gerekir /etc/php5/conf.d/mcrypt.ini.


2

Mcrypt modülü varsayılan olarak etkin değildir. Mcrypt modülünü etkinleştirin ve ardından apache'yi ( kredi ) yeniden başlatın

sudo php5enmod mcrypt
sudo service apache2 restart

1

İşte bu. Görünüşe göre bazen 'enmod' kadar basit bir şey yapmanın en karışık yolunu arıyoruz; ) Gibi Boinst diyor: sudo php5enmod mcrypt. Sonra apache'yi yeniden yükleyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.