Ben kullanmaya çalışıyorum migrate
fonksiyonu 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?
Ben kullanmaya çalışıyorum migrate
fonksiyonu 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?
Yanıtlar:
Web etkin uzantılar ve komut satırı etkin uzantılar farklı olabilir. php -m
Terminalinizde çalıştırın ve mcrypt
listelenip 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.ini
dosyada uzantıyı etkinleştirebilirsiniz.
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'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
- PHP 7.1 mcrypt kullanımdan kaldırıldı ve 7.2 mcrypt uzantısını tamamen kaldırdı
- Laravel 5.1 ve üzeri mcrypt ihtiyacını ortadan kaldırdı
sudo apt-get install php5-mcrypt
Uzantının tam olarak nasıl yüklenmediği tuhaf .
Eğer var mı MAMP yüklü?
which php
Hangi PHP sürümünü kullandığınızı görmek için terminalde kullanın .
MAMP'ın PHP sürümü değilse, .bash_profile
kullanıcının ana dizinini düzenlemelisiniz veya eklemelisiniz , yani:cd ~
In .bash_profile
aşağıdaki satırı ekleyin:
export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH
Düzenlendi: Öncelikle cd /Applications/MAMP/bin/php
MAMP'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 restart
hangi PHP kullandığınızı görmek için terminal.
Ve şimdi çalışıyor olmalı.
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.
cd ~
, çok önemli, .bash_profile
orada 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!
XAMPP 1.7.3 ve Mac kullananlara
which php
/usr/bin/php
, o zaman 3'e geçin.sudo nano ~/.bash_profile
(veya sudo vim ~/.bash_profile
nasıl kullanılacağını biliyorsanız)export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
cd ~
. .bash_profile
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.
"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
export PATH="/opt/lampp/bin:$PATH"
OSX'teki MAMP veya XAMPP dışı kullanıcılar için (homebrew takılıyken):
brew install homebrew/php/php56-mcrypt
Şerefe!
$ brew install homebrew/php/php55-mcrypt
, aksi halde varError: No available formula with the name "php55-mcrypt"
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
sudo aptitude -y install php5-mcrypt
arkasından sudo php5enmod mcrypt
ve sudo service php5-fpm restart
. (Yumuşak bağlantı adımını atladım). Çalıştı :)
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
docker-php-ext-install mcrypt
. Görüntü üzerinde test edilmiştir: php:5.6.31-apache
. O olmadan, php -m
göstermez mcrypt
.
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.ini
iç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
Ubuntu için başkaları çalışmıyorsa şu adımları deneyin:
cd ~
sudo apt-get remove php5-mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart
Umarım yardımcı olur. Teşekkürler !
İş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:
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
Bu benim için Linux Mint yerel ortamımda çözdü /ubuntu/350942/cannot-get-mcrypt-for-php5
Aşağıdaki klasörlerde /etc/php5/conf.d/mcrypt.ini dosyasına /etc/php5/apache2/conf.d/mcrypt.ini ve /etc/php5/cli/conf.d içinde bir symlink yapmam gerekiyordu. /mcrypt.ini
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.
@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ı!
Komutu girin which php
Hangi 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_profile
dosyayı (yani, .bash_profile
ana 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.
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 .
MacPorts'u kullanarak PHP'nin tam konumunu aşağıdaki komutla bulabilirsiniz:
port contents php70 | grep bin/php
Yüklemiş olduğunuz php70
PHP sürümüyle değiştirmeniz gerektiğini unutmayın .
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 php56
PHP sürümüyle değiştirmeniz gerektiğini unutmayın .
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
Z Shell kullanıyorsanız aşağıdakileri yapmanız yeterlidir:
nano ~/.zshrc
export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
source ~/.zshrc
which php
- MAMP 5.6.10 yolunu almalısınız5.6.10, MAMP'ınızda ayarladığınız PHP sürümüdür.
Laravel'in mcrypt
artık uzatmaya ihtiyacı yok .mcrypt
kullanı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
sudo php yüklemek mcrypt
sudo php5enmod mcrypt
mcrypt
, bunun OP'nin sorununu neden çözeceğine inandığınızı genişletebilir misiniz?
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