Laravel için Mcrypt PHP uzantısı gerekiyor


429

Ben kullanmaya çalışıyorum migratefonksiyonu Laravel 4üzerinde OSX. Ancak, aşağıdaki hatayı alıyorum:

Laravel requires the Mcrypt PHP extension.

Anladığım kadarıyla zaten etkin (aşağıdaki resme bakın).

Sorun nedir ve nasıl düzeltebilirim?

resim açıklamasını buraya girin


Laravel 3 veya 4 kullanıyor musunuz?
Jan P.

Bilgileri yayına ekledim. Laravel 4
Patrick Reck

4
Belki bu yazı size yardımcı olacaktır: stackoverflow.com/questions/14476181/…
Jan P.

Yerleşik PHP mi kullanıyorsunuz, yoksa başka bir sürüm mü kurdunuz? Öyleyse, nasıl yüklediniz?
Jamie Schembri

2
Homebrew kullanarak bu kolay çözümü buldum: jorble.com/2013/04/install-php-mcrypt-in-macosx
gelviis 2:13

Yanıtlar:


288

Web etkin uzantılar ve komut satırı etkin uzantılar farklı olabilir. php -mTerminalinizde çalıştırın ve mcryptlistelenip listelenmediğini kontrol edin . Değilse , terminalinizden php.iniçalıştırarak komut satırının dosyanızı nereden yüklediğini kontrol edin php --ini.

Bu php.inidosyada uzantıyı etkinleştirebilirsiniz.

OSX

OSX ile birlikte gelen yerel PHP'ye işaret eden terminal nedeniyle OSX'de çalışan insanların duyduklarını duydum. Bunun yerine bash profilinizi PHP'nizin gerçek yolunu içerecek şekilde güncellemelisiniz. Böyle bir şey (bu yüzden% 100 olmayabilir aslında OSX kullanmıyorum):

export PATH=/usr/local/php5/bin:$PATH

Ubuntu

Ubuntu'nun önceki sürümlerinde (14.04'ten önce) çalıştırdığınızda sudo apt-get install php5-mcrypt, uzantıyı aslında mods-available. Symlink yapmanız gerekecek.

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini

Tüm Ubuntu sürümlerinde, kurulduktan sonra modu etkinleştirmeniz gerekir. Bunu ile yapabilirsiniz php5enmod.

sudo php5enmod mcrypt
sudo service apache2 restart

NOTLAR


4
Bu benim için Ubuntu'da çalıştı, teşekkürler! sudo apt-get install php5-mcryptUzantının tam olarak nasıl yüklenmediği tuhaf .
Aristides

Ubuntu 13.10 - Ben de mcrypt kendisi kurmak zorunda
Ondrej Galbavý

1
Görünüşe göre zaten modry-kullanılabilir mcrypt ini yüklü vardı, ben sadece php5enmod komut farkında değildi. Bunu kullanmak bir cazibe gibi çalışır. Teşekkürler!
imkingdavid

Yani sadece bu, ben php -m gittiğinizde listelenen mcrypt var, ne zaman php / usr / local / bin / php diyor. Ive demlemek ile mcrypt yüklemeye çalıştı ve işe yaramış gibi görünüyordu .. Ama Laravel hala Mcrypt PHP uzantısı gerekli diyor.
Marais Rossouw

1
@İmkingdavid gibi ben de sembolik bağ gerektirmedim. php5enmod yeterliydi. Ubuntu 14.04 LTS
Brett

340

Eğer var mı MAMP yüklü?

which phpHangi PHP sürümünü kullandığınızı görmek için terminalde kullanın .

MAMP'ın PHP sürümü değilse, .bash_profilekullanıcının ana dizinini düzenlemelisiniz veya eklemelisiniz , yani:cd ~

In .bash_profileaşağıdaki satırı ekleyin:

export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH

Düzenlendi: Öncelikle cd /Applications/MAMP/bin/phpMAMP'tan hangi PHP sürümünü kullandığınızı kontrol etmek için komutu kullanmalı ve sonra yukarıdaki PHP sürümüyle değiştirmelisiniz.

Sonra restarthangi PHP kullandığınızı görmek için terminal.

Ve şimdi çalışıyor olmalı.


18
Mcrypt'i almak için MAMP'a ihtiyacınız yok.
jackyalcine

48
Tabii ki Mcrypt'i almak için MAMP'a ihtiyacınız yok. bu yanıt, yalnızca XAMPP veya MAMP veya başkaları gibi bilgisayarlarında birden fazla PHP sürümü yüklü kişiler içindir.
JustinHo

Benzer şekilde, AMPPS kullanıcıları için: export PATH=/Applications/AMPPS/php-5.4/bin:$PATH... 5.4.xx için çekim yaptığınızı varsayarsak, orada da 5.3 ve 5.5 var.
Joel Mellon

6
Herkes MAMP kullanmaz, geri kalan insanlar için bir cevabınız var mı?
TuGordoBello

2
Sadece işaret ettiğimi düşündüm cd ~, çok önemli, .bash_profileorada var olanı açmalısınız, ayrıca yeni bash değişkenlerinin yüklenmesi için terminalinizi kapatıp yeniden açmanız önemlidir. Sadece değişikliğin uygulandığını doğrulamak için hangi php'yi çalıştırdığınızdan emin olun, mutlu kodlama!
wired00

142

XAMPP 1.7.3 ve Mac kullananlara

  1. Terminale git
  2. Giriş which php
    • O diyorsa /usr/bin/php, o zaman 3'e geçin.
  3. Enter sudo nano ~/.bash_profile(veya sudo vim ~/.bash_profilenasıl kullanılacağını biliyorsanız)
  4. Sonra bunu yapıştırın export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. Ctrl+Osonra kaydetmek için girin, sonra Ctrl+Xçıkmak için girin.
  6. tip cd ~
  7. tip . .bash_profile
  8. terminali yeniden başlat.
  9. Enter which php. Doğru yaptıysanız, # 4'teki yolla aynı olmalıdır.

Mcrypt hatasının nedeni, Mac'inizin kendi yerel php'sini kullanmasıdır, xampp'in sahip olduğu bir tane değiştirmeniz gerekir.

PS Mac kullanıcıları için Laravel 4 için MAMP kullanmanızı öneririm, bu sorun ter olmadan php dosya bilgisi hatası ile birlikte çözülecek ve xampp'in php sürümü çok eski.


12
Ayrıca iyi bir cevap! MAMP için bu olmalı:"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
Foxinni

3
~ / .bash_profile'a sahip olmayanlar için ~ / .bashrc
Ironwind'i ziyaret etmeyi

6
hemen .bash_profile dosyasını çalıştırır, normalde bu bash'ın çalışması için yeniden başlatmanız gerekir
Bryan P

Kötü bir şey oldu ve şimdi terminalim sudo'yu bile tanımayacaktı
Sunny R Gupta

Lampp üzerinde de çalışır, sadece yolunu değiştirinexport PATH="/opt/lampp/bin:$PATH"
JTC

87

OSX'teki MAMP veya XAMPP dışı kullanıcılar için (homebrew takılıyken):

brew install homebrew/php/php56-mcrypt

Şerefe!


1
Bu yerel OSX PHP ile işe yaramaz endişeliydi, ama ben sadece yükledim ve PATH ya da bir şey ile uğraşmak zorunda değildi. Sadece çalışıyor. Güzel bir.
Lauren

3
Daha kapsamlı bir kaynak olması için bu cevabın bu konudaki baştaki cevaplara eklenmesi harika olurdu. Lauren'in belirttiği gibi hızlı tavsiye için teşekkürler, bu gerçekten sorunu çözüyor.
Bryan Rayner

4
Bu aslında $ brew install homebrew/php/php55-mcrypt, aksi halde varError: No available formula with the name "php55-mcrypt"
Connor Leech

47

Ubuntu kullanarak

sudo php5enmod mcrypt

benim için hile yaptı. Sadece CLI'den PHP kullanmanız gerektiğinden Apache'yi yeniden başlatmanız gerekmez.


37

Ubuntu'da (PHP-FPM, Nginx)

sudo apt-get install php5-mcrypt

Php5-mcrypt yüklendikten sonra

mods-ini içinde ini dosyalarına bir sembolik bağlantı yapmak zorundasınız:

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini

etkinleştirme:

sudo php5enmod mcrypt

php5-fpm'yi yeniden başlat:

sudo service php5-fpm restart

Daha fazla detay


Koştum ve sudo aptitude -y install php5-mcryptarkasından sudo php5enmod mcryptve sudo service php5-fpm restart. (Yumuşak bağlantı adımını atladım). Çalıştı :)
Aditya MP

26

Laravel'in Apache üzerinde çalışmasını sağlama

PHP sürümü: PHP 5.5.9

Ubuntu sürümü: 14.04

Windows üzerinde çalışan bir laravel projem vardı. ubuntu sunucusuna kopyaladığında, mcrypt hatası almaya başladım. bu, bir çok saat süren deneme yanılma sonrasında

esnaf komuta çalışma

(artisan komut satırı aracını kullanırken mcrypt hatası alıyorsanız)

Ben her zaman önce php5enmod komutunu çalıştırın, ben hata mesajları vardı deneme ve hata bir sürü yaptım. ancak yeni kurulumda hata mesajı yoktu. bu adımdan sonra esnaf komutunu çalıştırdım

sudo rm /etc/php5/mods-available/mcrypt.ini
sudo apt-get purge php5-mcrypt
sudo apt-get install mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

tarayıcı hatasını düzeltme

(yerel laravel dizin sayfasına erişirken tarayıcıda mcrypt hatası alıyorsanız)

sudo nano /etc/php5/apache2/php.ini

php ini'nin dinamik olarak derlenmiş uzantıları bölümünün altına aşağıdaki satırı ekleyin

extension=mcrypt.so

apache sunucusunu yeniden başlatın, laravel önbelleğini ve çalışan her şeyi temizleyin


Eğer php docker görüntü üzerinde çalışıyorsanız, ayrıca çalıştırmanız gerekir docker-php-ext-install mcrypt. Görüntü üzerinde test edilmiştir: php:5.6.31-apache. O olmadan, php -mgöstermez mcrypt.
Ewa

19

Ubuntu 14.04 üzerindeki php-fpm kurulumları için aşağıdakiler benim için çalıştı:

sudo apt-get install php5-mcrypt

Bu, mcrypt.iniiçinde dosya oluşturur/etc/php5/mods-available/

Sonra

sudo php5enmod mcrypt

şunlarda bir sembolik bağlantı oluşturur: /etc/php5/fpm/conf.d/

Sadece php-fpm hizmetlerini yeniden başlat sudo service php5-fpm restart


19

Ubuntu için başkaları çalışmıyorsa şu adımları deneyin:

  1. cd ~
  2. sudo apt-get remove php5-mcrypt
  3. sudo apt-get install php5-mcrypt
  4. sudo php5enmod mcrypt
  5. sudo service apache2 restart

Umarım yardımcı olur. Teşekkürler !


19

Veya kullan:

sudo apt-get install php5-mcrypt

Bu standart PHP yüklemeleri üzerinde çalışacak emin değilim - Ben php 5.5.7paketi kullanarak yüklendi :

sudo add-apt-repository ppa:ondrej/php5 
sudo apt-get update

16

İşletim sistemim Yosemite.

Bu sorunu, yapılandırma yollarını bularak çözüyorum:

php --ini

Örnek çıktı:

Configuration File (php.ini) Path: /usr/local/etc/php/5.5
Loaded Configuration File:         /usr/local/etc/php/5.5/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.5/conf.d
Additional .ini files parsed:      (none)

Sonraki adımlar:

  1. Php55 ini dosyasını yeniden adlandırın veya silin
  2. Symlink oluştur
  3. Apache sunucusunu yeniden başlat

Komutlar:

mv /usr/local/etc/php/5.5/php.ini /usr/local/etc/php/5.5/php.ini.default
ln -s /etc/php.ini /usr/local/etc/php/5.5/php.ini
sudo apachectl restart

Sonra php modüllerinizi aşağıdaki yollarla kontrol edebilirsiniz:

php -m

16

Sadece lezzetler için,

yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath

Belki remi repo yüklemeniz gerekiyor



14

Hepsi bir arada bir ortama ihtiyacınız var. MAMP veya XAMPP veya başka herhangi bir araç kullanabilirsiniz. Bu araçlardan birini yükledikten sonra .bash_profile dosyanızı (bash kullandığınızı varsayarak) düzenlemeniz (oluşturmanız) gerekecektir.

Ya da basit ve daha profesyonel Laravel Homestead'i kullanabilirsiniz.

İşte resmi belgelere bir bağlantı: http://laravel.com/docs/5.0/homestead

Ayrıca Jeffrey'in ücretsiz bir öğreticisi var: https://laracasts.com/series/laravel-5-fundamentals/episodes/2

Aşağıdaki araçların hepsini önceden yükleyeceğiniz için çiftlik evine gitmenizi tavsiye ederim.

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • nginx
  • MySQL
  • postgres
  • Düğüm (Bower, Grunt ve Gulp ile)
  • Redis
  • memcached
  • Beanstalkd
  • Laravel Elçisi
  • Kumaş + HipChat Uzatma

10

@JetLaggy üzerinde genişleyen:

MAMP dizini ile .bash_profile değiştirmek için tekrar tekrar denedikten sonra, MAMP php dizini için dosya izinlerini değiştirdim ve uygun dizini göstermek için 'hangi php' elde edebildi. Sorun 'php -v' gibi diğer işlevlerin çalışmadığıydı.

Bu yüzden MAMP'i güncelledim. http://documentation.mamp.info/en/mamp/installation/updating-mamp

Bu benim özel kurulum için hile yaptı. Ben PATH benim PHP güncellenmiş sürümünü yansıtacak şekilde ayarlamak zorunda kaldı, ama bir kez yaptım, her şey çalıştı!


9

OS X'te

MAMP kullanma

Komutu girin which phpHangi PHP sürümünü kullandığınızı görmek terminale . MAMP'ın PHP sürümü değilse, Bash tarafından kullanılan $ PATH değişkeninin güncellenmesi gerekecektir.

İlk olarak, MAMP'tan hangi php sürümünü kontrol etmek ve sürümü not etmek için "cd / Applications / MAMP / bin / php" komutunu kullanmalısınız (örneğin, php5.6.7).

Sürümü öğrendikten sonra, ~/.bash_profiledosyayı (yani, .bash_profileana dizininizde) düzenlemeli ve bir dışa aktarma satırı eklemelisiniz:

    export PATH=/Applications/MAMP/bin/php/php5.6.7/bin:$PATH

Php5.6.7'yi MAMP'de seçtiğiniz PHP sürümüyle değiştirdiğinizden emin olun.

Dosya kaydedildikten sonra Terminalinizi kapattığınızdan ve tekrar açtığınızdan emin olun. Bu yapıldıktan sonra, MAMP ile birlikte gelen PHP'yi kullanacaksınız.


İçine koymanız gereken satırın ne olduğunu kolayca bulmanın bir yolu .bash_profile, terminalinizde aşağıdaki komutu çalıştırmaktır:

    echo export PATH=`cat /Applications/MAMP/conf/apache/httpd.conf \
         | grep php | grep -i LoadModule | head -n1 \
         | sed -e 's/^[^\/]*\/\(.*\)\/mod.*/\/\1/'`/bin:\$PATH

Bu üç satırı kopyalayıp terminalinize yapıştırmak, MAMP kontrol panelinde seçilen PHP sürümünü doğru şekilde verecektir.

Homebrew / MacPorts'u Kullanma

Bu iki paket yöneticisinden biriyle gelen PHP kullanıyorsanız path, /usr/local/bin/(Homebrew) veya /opt/local/bin(MacPorts) içeriğinizin olduğundan emin olun .

PHP yolunu MacPorts ile kontrol etme

MacPorts'u kullanarak PHP'nin tam konumunu aşağıdaki komutla bulabilirsiniz:

port contents php70 | grep bin/php

Yüklemiş olduğunuz php70PHP sürümüyle değiştirmeniz gerektiğini unutmayın .

Homebrew-php ile PHP yolunu kontrol edin

Homebrew-php ( https://github.com/Homebrew/homebrew-php ) çeşitli PHP sürümlerine sahip bir musluktur.

Homebrew'u kullanarak PHP'nin tam konumunu aşağıdaki komutla bulabilirsiniz:

brew --prefix homebrew/php/php56

Yüklemiş olduğunuz php56PHP sürümüyle değiştirmeniz gerektiğini unutmayın .


6

Ubuntu içinde 14.04

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

Ubuntu 16.04

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt

Ubuntu 18.04

sudo apt install php7.0-mcrypt
sudo phpenmod mcrypt

veya

sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt

5

Z Shell kullanıyorsanız aşağıdakileri yapmanız yeterlidir:

  1. Terminali aç
  2. sudo nano ~/.zshrc
  3. Bunu yapıştırın; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
  4. Kayıt etmek
  5. Çalıştırmak source ~/.zshrc
  6. Çalıştır which php - MAMP 5.6.10 yolunu almalısınız

5.6.10, MAMP'ınızda ayarladığınız PHP sürümüdür.


3

Demleme ile OSX

$ brew install mcrypt php70-mcrypt

PHP 7.0.x çalıştırıyorum, bu yüzden farklı bir sürüm kullanıyorsanız, sürümüne "php70" değiştirin.
Diğer cevaplarda belirtildiği gibi, php sürümünüzü ile görebilirsiniz $ php -v.


3

Bugün hala buraya gelenler için:

Laravel'in mcryptartık uzatmaya ihtiyacı yok .mcryptkullanılmıyorsa, libmcrypt'e yönelik son güncelleme 2007'de yapıldı. Laravel 4.2 de kullanılmıyor ve artık desteği yok. En iyi (= güvenli) çözüm Laravel> 5.1'e güncellemektir (Laravel 5.2'den önce LTS yoktur).

Mcrypt Haziran 2015'te Laravel'den kaldırıldı: https://github.com/laravel/framework/pull/9041


Homestead hükmünü çalıştırarak

0

sudo php yüklemek mcrypt

sudo php5enmod mcrypt


1
Yorumunuz teknik olarak doğru olsa da, StackOverflow'daki yanıtlarınıza bazı açıklamalar eklemeye çalışıyoruz. Dahası, OP zaten kurulu gibi görünüyor mcrypt, bunun OP'nin sorununu neden çözeceğine inandığınızı genişletebilir misiniz?
milo526

0

php sürümünüze göre ubuntu 14.04'te: 5.6,7.0,7.1,7.2,7.3

sudo apt-get kurulum php {sürüm} -mcrypt

sudo apt-get install php7.1-mcrypt

sudo phpenmod mcrypt 
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.