Laravel membutuhkan ekstensi PHP Mcrypt

429

Saya mencoba untuk menggunakan migratefungsi di Laravel 4atas OSX. Namun, saya mendapatkan kesalahan berikut:

Laravel requires the Mcrypt PHP extension.

Sejauh yang saya mengerti, itu sudah diaktifkan (lihat gambar di bawah).

Apa yang salah, dan bagaimana cara memperbaikinya?

masukkan deskripsi gambar di sini

Patrick Reck
sumber
Apakah Anda menggunakan Laravel 3 atau 4?
Jan P.
Baru saja menambahkan info ke pos. Ini Laravel 4
Patrick Reck
4
Mungkin posting ini akan membantu Anda: stackoverflow.com/questions/14476181/…
Jan P.
Apakah Anda menggunakan PHP bawaan, atau apakah Anda menginstal versi lain? Jika demikian, bagaimana Anda menginstalnya?
Jamie Schembri
2
Saya menemukan solusi mudah ini menggunakan homebrew: jorble.com/2013/04/install-php-mcrypt-in-macosx
gelviis

Jawaban:

288

Ekstensi yang diaktifkan web dan ekstensi yang diaktifkan baris perintah dapat berbeda. Jalankan php -mdi terminal Anda dan periksa untuk melihat apakah mcryptterdaftar. Jika tidak maka periksa di mana baris perintah memuat php.inifile Anda dengan menjalankan php --inidari terminal Anda.

Dalam php.inifile ini Anda dapat mengaktifkan ekstensi.

OSX

Saya telah mendengar ada orang di OSX yang mengalami masalah karena terminal menunjuk ke PHP asli yang dikirimkan dengan OSX. Anda sebaiknya memperbarui profil bash Anda untuk memasukkan jalur aktual ke PHP Anda. Sesuatu seperti ini (saya sebenarnya tidak menggunakan OSX jadi ini mungkin bukan 100%):

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

Ubuntu

Pada versi Ubuntu yang lebih lama (sebelum 14.04) ketika Anda menjalankannya sudo apt-get install php5-mcryptsebenarnya tidak menginstal ekstensi ke dalam mods-available. Anda harus menghubungkannya.

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

Pada semua versi Ubuntu Anda harus mengaktifkan mod setelah diinstal. Anda bisa melakukannya dengan php5enmod.

sudo php5enmod mcrypt
sudo service apache2 restart

CATATAN

Jason Lewis
sumber
4
ini bekerja untuk saya di Ubuntu, terima kasih! Aneh bagaimana sudo apt-get install php5-mcryptsebenarnya tidak menginstal ekstensi sepenuhnya.
Aristides
Ubuntu 13.10 - Saya juga harus menginstal mcrypt sendiri
Ondrej Galbavý
1
Rupanya itu sudah menginstal mcrypt ini ke mods-available, saya hanya tidak mengetahui perintah php5enmod. Menggunakannya membuatnya bekerja seperti pesona. Terima kasih!
imkingdavid
Jadi hanya ini, saya memiliki mcrypt terdaftar ketika saya pergi php -m, ketika saya pergi yang katanya php / usr / local / bin / php. Saya sudah mencoba menginstal mcrypt dengan minuman dan tampaknya telah bekerja .. Tapi Laravel masih mengatakan ekstensi PHP Mcrypt diperlukan.
Marais Rossouw
1
Seperti @imkingdavid saya juga tidak memerlukan tautan simbolik. php5enmod sudah cukup. Ubuntu 14.04 LTS
Brett
340

Apakah Anda sudah menginstal MAMP ?

Gunakan which phpdi terminal untuk melihat versi PHP yang Anda gunakan.

Jika bukan versi PHP dari MAMP, Anda harus mengedit atau menambahkan .bash_profiledirektori home pengguna, yaitu:cd ~

Di .bash_profile, tambahkan baris berikut:

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

Diedit: Pertama, Anda harus menggunakan perintah cd /Applications/MAMP/bin/phpuntuk memeriksa versi PHP dari MAMP yang Anda gunakan dan kemudian mengganti dengan versi PHP di atas.

Kemudian restartterminal untuk melihat PHP mana yang Anda gunakan sekarang.

Dan itu seharusnya berfungsi sekarang.

JustinHo
sumber
18
Anda tidak perlu MAMP untuk mendapatkan Mcrypt.
jackyalcine
48
tentu saja Anda tidak perlu MAMP untuk mendapatkan Mcrypt. jawaban ini hanya untuk orang-orang yang memiliki beberapa versi PHP diinstal pada komputer mereka, katakanlah XAMPP atau MAMP, atau yang lainnya.
JustinHo
Demikian pula, untuk pengguna AMPPS: export PATH=/Applications/AMPPS/php-5.4/bin:$PATH... dengan asumsi Anda menembak untuk 5.4.xx, ada juga 5.3 dan 5.5 di sana.
Joel Mellon
6
Semua orang tidak menggunakan MAMP, Anda punya jawaban untuk orang lain?
TuGordoBello
2
Hanya berpikir saya akan tunjukkan, yang cd ~sangat penting, Anda harus membuka .bash_profileyang ada di sana, JUGA yang penting adalah Anda harus menutup terminal Anda dan membuka kembali sehingga variabel bash baru dimuat. Pastikan untuk menjalankan php mana untuk memverifikasi bahwa perubahan Anda telah diterapkan, selamat coding!
wired00
142

Untuk mereka yang menggunakan XAMPP 1.7.3 dan Mac

  1. Pergi ke Terminal
  2. Memasukkan which php
    • Jika dikatakan /usr/bin/php, maka lanjutkan ke 3.
  3. Masukkan sudo nano ~/.bash_profile(atau sudo vim ~/.bash_profilejika Anda tahu cara menggunakannya)
  4. Lalu tempel ini export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. Ctrl+Olalu masuk untuk menyimpan, lalu Ctrl+Xuntuk keluar.
  6. Tipe cd ~
  7. Tipe . .bash_profile
  8. restart terminal.
  9. Masukkan which php. Jika Anda melakukannya dengan benar, itu harus sama dengan jalan di # 4.

Alasan untuk kesalahan mcrypt adalah karena Mac Anda menggunakan php aslinya, Anda perlu mengubahnya ke yang dimiliki xampp.

PS Saya akan merekomendasikan menggunakan MAMP untuk Laravel 4 untuk pengguna Mac, masalah ini akan diselesaikan bersama dengan kesalahan info file php tanpa keringat, dan versi php xampp sudah ketinggalan zaman.

Bryan P
sumber
12
Juga jawaban yang bagus! Seharusnya ini untuk MAMP:"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
Foxinni
3
bagi mereka yang tidak memiliki ~ / .bash_profile, coba periksa ~ / .bashrc
Ironwind
6
segera menjalankan .bash_profile, biasanya Anda harus memulai ulang agar bash tersebut dijalankan
Bryan P
Sesuatu yang buruk terjadi dan sekarang terminal saya bahkan tidak mengenali sudo
Sunny R Gupta
Ini bekerja pada lampp juga, hanya mengubah jalur keexport PATH="/opt/lampp/bin:$PATH"
JTC
87

Untuk pengguna non MAMP atau XAMPP di OSX (dengan homebrew diinstal):

brew install homebrew/php/php56-mcrypt

Bersulang!

oozzal
sumber
1
Saya khawatir ini tidak akan berfungsi dengan PHP OSX asli, tapi saya baru saja menginstalnya dan saya tidak perlu dipusingkan dengan PATH saya atau apa pun. Hanya bekerja. Bagus
Lauren
3
Alangkah baiknya jika jawaban ini ditambahkan ke jawaban terkemuka di utas ini, untuk menjadikannya sumber daya yang lebih komprehensif. Terima kasih atas saran cepatnya, seperti yang disebutkan Lauren, ini benar-benar memperbaiki masalahnya.
Bryan Rayner
4
Ini sebenarnya $ brew install homebrew/php/php55-mcrypt, kalau tidak punyaError: No available formula with the name "php55-mcrypt"
Connor Leech
47

Menggunakan Ubuntu, adil

sudo php5enmod mcrypt

melakukan trik untukku. Anda tidak perlu me-restart Apache karena Anda perlu menggunakan PHP hanya dari CLI.

mppfiles
sumber
37

Di Ubuntu (PHP-FPM, Nginx)

sudo apt-get install php5-mcrypt

Setelah menginstal php5-mcrypt

Anda harus membuat symlink ke file ini di mod-tersedia:

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

memungkinkan:

sudo php5enmod mcrypt

mulai ulang php5-fpm:

sudo service php5-fpm restart

Lebih detail

Nanhe Kumar
sumber
Aku berlari sudo aptitude -y install php5-mcrypt, diikuti oleh sudo php5enmod mcryptdan sudo service php5-fpm restart. (Saya melewatkan langkah menghubungkan lembut). Berhasil :)
Aditya MP
26

Membuat Laravel bekerja di Apache

Versi PHP: PHP 5.5.9

Versi Ubuntu: 14.04

Saya punya proyek laravel yang berfungsi di windows. ketika saya menyalinnya ke server ubuntu, saya mulai mendapatkan kesalahan mcrypt. ini setelah banyak jam coba-coba

membuat perintah pengrajin bekerja

(jika Anda mengalami kesalahan mcrypt saat menggunakan alat baris perintah artisan)

Saya melakukan banyak percobaan dan kesalahan sehingga setiap kali saya menjalankan perintah php5enmod sebelumnya, saya memiliki pesan kesalahan. tetapi pada instalasi baru tidak ada pesan kesalahan. setelah langkah ini saya mendapat perintah pengrajin yang bekerja

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

memperbaiki kesalahan browser

(jika Anda mengalami kesalahan mcrypt di browser saat mengakses halaman indeks laravel lokal)

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

tambahkan baris berikut di bawah bagian ekstensi yang disusun secara dinamis dari php ini

extension=mcrypt.so

restart server apache, bersihkan cache laravel dan semuanya berfungsi

Sojan V Jose
sumber
Jika Anda bekerja pada gambar php docker , Anda juga harus menjalankan docker-php-ext-install mcrypt. Diuji pada gambar: php:5.6.31-apache. Tanpa itu, php -mtidak muncul mcrypt.
Ewa
19

Untuk instalasi php-fpm di Ubuntu 14.04, berikut ini bekerja untuk saya:

sudo apt-get install php5-mcrypt

Ini akan membuat mcrypt.inifile di dalamnya/etc/php5/mods-available/

Kemudian

sudo php5enmod mcrypt

akan membuat symlink di: /etc/php5/fpm/conf.d/

Cukup restart layanan php-fpm sudo service php5-fpm restart

Prateek Choudhary
sumber
19

Untuk ubuntu coba langkah-langkah ini jika orang lain tidak berfungsi:

  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

Semoga itu bisa membantu. Terima kasih!

Sagiruddin Mondal
sumber
19

Atau, gunakan:

sudo apt-get install php5-mcrypt

tidak yakin apakah ini akan berfungsi pada pemasangan PHP standar - saya menginstal php 5.5.7menggunakan paket dari:

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

OS saya adalah Yosemite.

Saya mengatasi masalah ini, dengan menemukan jalur konfigurasi:

php --ini

Contoh output:

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)

Langkah selanjutnya:

  1. Ganti nama atau Hapus file php55 ini
  2. Buat symlink
  3. Mulai ulang server Apache

Perintah:

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

Kemudian Anda dapat memeriksa modul php Anda melalui:

php -m
d.danailov
sumber
16

Hanya untuk konsumen,

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

Mungkin Anda perlu menginstal remi repo

Sean
sumber
15

Ini menyelesaikannya untuk saya di lingkungan Linux Mint lokal saya /ubuntu/350942/cannot-get-mcrypt-for-php5

Saya perlu membuat symlink ke file /etc/php5/conf.d/mcrypt.ini saya di folder berikut ini /etc/php5/apache2/conf.d/mcrypt.ini dan /etc/php5/cli/conf.d /mcrypt.ini

Theo Kouzelis
sumber
14

Anda membutuhkan semua dalam satu lingkungan. Anda dapat menggunakan MAMP atau XAMPP atau alat lainnya. Setelah menginstal salah satu alat ini, Anda perlu mengedit (membuat) .bash_profile Anda (Asumsikan Anda menggunakan bash).

Atau bahkan sederhana dan lebih profesional, Anda dapat menggunakan Laravel Homestead.

Berikut ini tautan ke dokumentasi resmi: http://laravel.com/docs/5.0/homestead

Jeffrey juga memiliki tutorial gratis tentang hal itu: https://laracasts.com/series/laravel-5-fundamentals/episodes/2

Saya menyarankan Anda untuk menggunakan homestead karena Anda akan melakukan pra-instal semua alat berikut.

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • Nginx
  • MySQL
  • Postgres
  • Node (Dengan Bower, Grunt, dan Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Utusan Laravel
  • Bahan + Ekstensi HipChat
mburakergenc
sumber
10

Memperluas pada @JetLaggy:

Setelah mencoba berulang-ulang untuk memodifikasi .bash_profile dengan direktori MAMP, saya mengubah izin file untuk direktori php MAMP dan bisa mendapatkan 'php mana' untuk menampilkan direktori yang tepat. Masalahnya adalah fungsi lain tidak berfungsi, seperti 'php -v'.

Jadi saya memperbarui MAMP. http://documentation.mamp.info/en/mamp/installation/updating-mamp

Ini melakukan trik untuk pengaturan khusus saya. Saya harus menyesuaikan PATH untuk mencerminkan versi PHP yang diperbarui, tetapi begitu saya melakukannya, semuanya bekerja!

abaumer
sumber
9

Di OS X

Menggunakan MAMP

Masukkan perintah which php di terminal untuk melihat versi PHP yang Anda gunakan. Jika bukan versi PHP dari MAMP, variabel $ PATH yang digunakan oleh Bash perlu diperbarui.

Pertama, Anda harus menggunakan perintah "cd / Applications / MAMP / bin / php" untuk memeriksa versi php mana dari MAMP dan mencatat versi tersebut (mis., Php5.6.7).

Setelah mengetahui versinya, Anda harus mengedit ~/.bash_profilefile (yaitu, .bash_profileyang ada di direktori home Anda) dan menambahkan baris ekspor:

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

Pastikan Anda mengganti php5.6.7 dengan versi PHP yang telah Anda pilih di MAMP.

Setelah file disimpan, pastikan Anda menutup Terminal dan membukanya lagi. Setelah selesai, Anda akan menggunakan PHP yang dikirimkan bersama MAMP.


Salah satu cara untuk dengan mudah menemukan garis apa yang harus Anda masukkan ke dalam .bash_profileadalah menjalankan perintah berikut di dalam terminal Anda:

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

Menyalin dan menempelkan ketiga baris ke terminal Anda akan dengan benar menghasilkan versi PHP yang telah dipilih di dalam panel kontrol MAMP.

Menggunakan Homebrew / MacPorts

Pastikan Anda pathmengandung /usr/local/bin/(Homebrew) atau /opt/local/bin(MacPorts) jika Anda menggunakan PHP yang dilengkapi dengan salah satu dari dua manajer paket ini.

Memeriksa jalur PHP dengan MacPorts

Anda dapat menemukan lokasi tepat PHP menggunakan MacPorts dengan perintah berikut:

port contents php70 | grep bin/php

Perhatikan bahwa Anda harus mengganti php70dengan versi PHP yang telah Anda instal.

Periksa jalur PHP dengan Homebrew-php

Homebrew-php ( https://github.com/Homebrew/homebrew-php ) adalah keran yang memiliki berbagai versi PHP.

Anda dapat menemukan lokasi persis PHP menggunakan Homebrew dengan perintah berikut:

brew --prefix homebrew/php/php56

Perhatikan bahwa Anda harus mengganti php56dengan versi PHP yang telah Anda instal.

Tim Groeneveld
sumber
6

di Ubuntu 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

atau

sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt
Gowthaman D
sumber
5

Jika Anda menggunakan Z Shell, lakukan saja hal berikut:

  1. Terminal terbuka
  2. sudo nano ~/.zshrc
  3. Tempel ini; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
  4. Menyimpan
  5. Lari source ~/.zshrc
  6. Jalankan which php - Anda harus mendapatkan jalur MAMP 5.6.10

5.6.10 adalah versi PHP yang Anda atur di MAMP Anda.

Tidak berkabel
sumber
3

OSX dengan minuman

$ brew install mcrypt php70-mcrypt

Saya menjalankan PHP 7.0.x, jadi ubah "php70" ke versi Anda, jika Anda menggunakan versi yang berbeda.
Seperti yang dinyatakan dalam jawaban lain, Anda dapat melihat versi php dengan $ php -v.

keris
sumber
3

Bagi mereka yang masih datang ke sini hari ini:

Laravel tidak perlu mcryptekstensi lagi . mcryptsudah usang, pembaruan terakhir ke libmcrypt adalah pada tahun 2007. Laravel 4.2 juga usang dan tidak memiliki dukungan lagi. Solusi terbaik (= aman) adalah memperbarui ke Laravel> 5.1 (tidak ada LTS sebelum Laravel 5.2).

Mcrypt telah dihapus dari Laravel pada Juni 2015: https://github.com/laravel/framework/pull/9041

rap-2-h
sumber
Saya memperbaiki masalah saya dengan menjalankan penyediaan homestead
0

sudo php instal mcrypt

sudo php5enmod mcrypt

Anubhav Tiwari
sumber
1
Meskipun komentar Anda mungkin benar secara teknis, kami berusaha memasukkan beberapa penjelasan untuk jawaban Anda di sini di StackOverflow. Terlebih lagi sepertinya OP sudah diinstal mcrypt, dapatkah Anda memperluas alasan Anda yakin ini akan memperbaiki masalah OP?
milo526
0

di ubuntu 14.04 berdasarkan versi php Anda: 5.6,7.0,7.1,7.2,7.3

sudo apt-get install php {version} -mcrypt

sudo apt-get install php7.1-mcrypt

sudo phpenmod mcrypt 
Jignesh Joisar
sumber