Laravel yêu cầu phần mở rộng Mcrypt PHP


429

Tôi đang cố gắng sử dụng migratechức năng Laravel 4trên OSX. Tuy nhiên, tôi nhận được lỗi sau:

Laravel requires the Mcrypt PHP extension.

Theo tôi hiểu, nó đã được kích hoạt (xem hình ảnh bên dưới).

Điều gì là sai, và làm thế nào tôi có thể sửa chữa nó?

nhập mô tả hình ảnh ở đây


Bạn có sử dụng Laravel 3 hoặc 4 không?
Jan P.

Chỉ cần thêm thông tin vào bài viết. Đó là Laravel 4
Patrick Reck

4
Có lẽ bài đăng này sẽ giúp bạn: stackoverflow.com/questions/14476181/ Khăn
Jan P.

Bạn đang sử dụng PHP tích hợp hay bạn đã cài đặt phiên bản khác? Nếu vậy, làm thế nào bạn cài đặt nó?
Jamie Schembri

2
Tôi đã tìm thấy giải pháp dễ dàng này bằng cách sử dụng homebrew: jorble.com/2013/04/install-php-mcrypt-in-macosx
gelviis

Câu trả lời:


288

Các tiện ích mở rộng kích hoạt web và tiện ích mở rộng dòng lệnh có thể khác nhau. Chạy php -mtrong thiết bị đầu cuối của bạn và kiểm tra xem nếu mcryptđược liệt kê. Nếu không thì hãy kiểm tra xem dòng lệnh đang tải php.initệp của bạn từ đâu bằng cách chạy php --initừ thiết bị đầu cuối của bạn.

Trong php.initập tin này, bạn có thể kích hoạt phần mở rộng.

OSX

Tôi đã nghe nói về những người trên OSX gặp vấn đề do thiết bị đầu cuối trỏ đến PHP gốc được gửi cùng với OSX. Thay vào đó, bạn nên cập nhật hồ sơ bash của bạn để bao gồm đường dẫn thực tế đến PHP của bạn. Một cái gì đó như thế này (tôi thực sự không sử dụng OSX nên điều này có thể không phải là 100%):

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

Ubuntu

Trên các phiên bản Ubuntu trước đó (trước ngày 14.04) khi bạn chạy, sudo apt-get install php5-mcryptnó không thực sự cài đặt tiện ích mở rộng vào mods-available. Bạn sẽ cần phải liên kết nó.

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

Trên tất cả các phiên bản Ubuntu, bạn sẽ cần bật mod sau khi cài đặt. Bạn có thể làm điều đó với php5enmod.

sudo php5enmod mcrypt
sudo service apache2 restart

GHI CHÚ


4
Điều này làm việc cho tôi trên Ubuntu, cảm ơn! Thật kỳ lạ sudo apt-get install php5-mcryptkhi không thực sự cài đặt phần mở rộng đầy đủ.
Aristides

Ubuntu 13.10 - Tôi cũng phải tự cài đặt mcrypt
Ondrej Galbavý

1
Rõ ràng là nó đã cài đặt mcrypt ini vào các mod có sẵn, tôi chỉ không biết lệnh php5enmod. Sử dụng làm cho nó hoạt động như một nét duyên dáng. Cảm ơn!
imkingdavid

Vì vậy, chỉ về điều này, tôi có mcrypt được liệt kê khi tôi đi php -m, khi tôi đi mà php nói / usr / local / bin / php. Ive đã thử cài đặt mcrypt với brew và dường như đã hoạt động .. Nhưng Laravel vẫn nói yêu cầu mở rộng Mcrypt PHP.
Marais Rossouw

1
Giống như @imkingdavid tôi cũng không yêu cầu liên kết tượng trưng. php5enmod là đủ. Ubuntu 14.04 LTS
Brett

340

Bạn đã cài đặt MAMP chưa?

Sử dụng which phptrong thiết bị đầu cuối để xem phiên bản PHP nào bạn đang sử dụng.

Nếu đó không phải là phiên bản PHP từ MAMP, bạn nên chỉnh sửa hoặc thêm .bash_profilevào thư mục chính của người dùng, đó là:cd ~

Trong .bash_profile, thêm dòng sau:

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

Đã chỉnh sửa: Trước tiên, bạn nên sử dụng lệnh cd /Applications/MAMP/bin/phpđể kiểm tra phiên bản PHP nào từ MAMP bạn đang sử dụng và sau đó thay thế bằng phiên bản PHP ở trên.

Sau đó, restartthiết bị đầu cuối để xem PHP mà bạn đang sử dụng bây giờ.

Và nó nên được làm việc ngay bây giờ.


18
Bạn không cần MAMP để lấy Mcrypt.
jackyalcine

48
tất nhiên bạn không cần MAMP để lấy Mcrypt. câu trả lời này chỉ dành cho những người có nhiều phiên bản PHP được cài đặt trên máy tính của họ, giả sử XAMPP hoặc MAMP hoặc các phiên bản khác.
JustinHo

Tương tự, đối với người dùng AMPPS: export PATH=/Applications/AMPPS/php-5.4/bin:$PATH... giả sử bạn đang quay trong 5,4.xx, cũng có 5,3 và 5,5 ở đó.
Joel Mellon

6
Mọi người không sử dụng MAMP, bạn có câu trả lời cho những người còn lại không?
TuGordoBello

2
Chỉ cần nghĩ rằng tôi đã chỉ ra, điều cd ~rất quan trọng, bạn phải mở .bash_profilecái tồn tại ở đó, CSONG quan trọng là bạn phải đóng thiết bị đầu cuối của mình và mở lại để các biến bash mới được tải. Chỉ cần đảm bảo chạy php nào để xác minh thay đổi của bạn đã được áp dụng, mã hóa vui vẻ!
dây00

142

Cho những người sử dụng XAMPP 1.7.3 và Mac

  1. Đi đến nhà ga
  2. Đi vào which php
    • Nếu nó nói /usr/bin/php, sau đó tiến hành 3.
  3. Nhập sudo nano ~/.bash_profile(hoặc sudo vim ~/.bash_profilenếu bạn biết cách sử dụng nó)
  4. Sau đó dán cái này export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. Ctrl+Osau đó nhập để lưu, sau đó Ctrl+Xthoát.
  6. Kiểu cd ~
  7. kiểu . .bash_profile
  8. khởi động lại thiết bị đầu cuối.
  9. Nhập which php. Nếu bạn đã làm đúng, nó sẽ giống như đường dẫn trong # 4.

Lý do cho lỗi mcrypt là vì máy Mac của bạn sử dụng php gốc, bạn cần thay đổi nó thành một xampp có.

PS Tôi khuyên bạn nên sử dụng MAMP cho Laravel 4 cho người dùng Mac, vấn đề này sẽ được giải quyết cùng với lỗi thông tin tệp php mà không bị đổ mồ hôi và phiên bản php của xampp đã quá lỗi thời.


12
Cũng là một câu trả lời tốt! Nên là cái này cho MAMP:"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
Foxinni

3
đối với những người không có ~ / .bash_profile, hãy thử kiểm tra ~ / .bashrc
Ironwind

6
chạy .bash_profile ngay lập tức, thông thường bạn cần khởi động lại để những bash đó chạy
Bryan P

Một cái gì đó tồi tệ đã xảy ra và bây giờ thiết bị đầu cuối của tôi thậm chí sẽ không nhận ra sudo
Sunny R Gupta

Nó cũng hoạt động trên lampp, chỉ cần thay đổi đường dẫn đếnexport PATH="/opt/lampp/bin:$PATH"
JTC

87

Đối với người dùng không phải MAMP hoặc XAMPP trên OSX (đã cài đặt homebrew):

brew install homebrew/php/php56-mcrypt

Chúc mừng!


1
Tôi đã lo lắng rằng điều này sẽ không hoạt động với OSX PHP bản địa, nhưng tôi chỉ cài đặt nó và tôi không phải loay hoay với PATH của tôi hay bất cứ điều gì. Chỉ cần làm việc. Đẹp một.
Lauren

3
Thật tuyệt vời khi câu trả lời này được thêm vào các câu trả lời hàng đầu về chủ đề này, để làm cho nó trở thành một tài nguyên toàn diện hơn. Cảm ơn lời khuyên nhanh chóng, như Lauren đã đề cập, điều này thực sự khắc phục vấn đề.
Bryan Rayner

4
Đây thực sự là $ brew install homebrew/php/php55-mcrypt, nếu không thì cóError: No available formula with the name "php55-mcrypt"
Connor Leech

47

Sử dụng Ubuntu, chỉ cần

sudo php5enmod mcrypt

đã lừa tôi Bạn không cần phải khởi động lại Apache vì bạn cần sử dụng PHP chỉ từ CLI.


37

Trong Ubuntu (PHP-FPM, Nginx)

sudo apt-get install php5-mcrypt

Sau khi cài đặt php5-mcrypt

bạn phải tạo một liên kết tượng trưng đến các tệp ini trong các mod có sẵn:

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

cho phép:

sudo php5enmod mcrypt

khởi động lại php5-fpm:

sudo service php5-fpm restart

Thêm chi tiết


Tôi chạy sudo aptitude -y install php5-mcrypt, theo sau sudo php5enmod mcryptsudo service php5-fpm restart. (Tôi bỏ qua bước liên kết mềm). Nó hoạt động :)
Aditya MP

26

Bắt Laravel làm việc trên Apache

Phiên bản PHP: PHP 5.5.9

Phiên bản Ubuntu: 14.04

tôi đã có một dự án laravel làm việc trên các cửa sổ. Khi tôi sao chép nó vào máy chủ Ubuntu, tôi bắt đầu gặp lỗi mcrypt. Điều này sau rất nhiều giờ thử và sai

nhận lệnh nghệ nhân làm việc

(nếu bạn gặp lỗi mcrypt khi sử dụng công cụ dòng lệnh thủ công)

Tôi đã làm rất nhiều thử nghiệm và lỗi, vì vậy mỗi lần tôi chạy lệnh php5enmod trước đó, tôi đã có thông báo lỗi. nhưng trên bản cài đặt mới không có thông báo lỗi. Sau bước này, tôi có lệnh nghệ nhân làm việc

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

sửa lỗi trình duyệt

(nếu bạn gặp lỗi mcrypt trong trình duyệt khi truy cập trang chỉ mục laravel cục bộ)

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

thêm dòng sau vào phần mở rộng được biên dịch động của php ini

extension=mcrypt.so

khởi động lại máy chủ apache, xóa bộ đệm laravel và mọi thứ hoạt động


Nếu bạn đang làm việc trên hình ảnh docker php , bạn cũng cần phải chạy docker-php-ext-install mcrypt. Đã thử nghiệm trên hình ảnh : php:5.6.31-apache. Không có điều đó, php -mkhông hiển thị mcrypt.
Ewa

19

Đối với cài đặt php-fpm trên Ubuntu 14.04, cách sau đây có hiệu quả với tôi:

sudo apt-get install php5-mcrypt

Điều này sẽ tạo mcrypt.initập tin bên trong/etc/php5/mods-available/

Sau đó

sudo php5enmod mcrypt

sẽ tạo một liên kết tượng trưng trong: /etc/php5/fpm/conf.d/

Chỉ cần khởi động lại dịch vụ php-fpm sudo service php5-fpm restart


19

Đối với Ubuntu, hãy thử các bước sau nếu những người khác không hoạt động:

  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

Hy vọng rằng sẽ giúp. Cảm ơn !


19

Hoặc dùng:

sudo apt-get install php5-mcrypt

không chắc chắn nếu điều này sẽ hoạt động trên các bản cài đặt PHP tiêu chuẩn - Tôi đã cài đặt php 5.5.7bằng gói từ:

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

16

Hệ điều hành của tôi là Yosemite.

Tôi giải quyết vấn đề này bằng cách tìm đường dẫn cấu hình:

php --ini

Ví dụ đầu ra:

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)

Bước tiếp theo:

  1. Đổi tên hoặc xóa tập tin php55 ini
  2. Tạo liên kết tượng trưng
  3. Khởi động lại máy chủ Apache

Các lệnh:

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

Sau đó, bạn có thể kiểm tra các mô-đun php của mình thông qua:

php -m

16

Chỉ dành cho người làm

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

Có lẽ bạn cần cài đặt repi repo



14

Bạn cần tất cả trong một môi trường. Bạn có thể sử dụng MAMP hoặc XAMPP hoặc bất kỳ công cụ nào khác. Sau khi cài đặt một trong những công cụ này, bạn sẽ cần chỉnh sửa (tạo) .bash_profile của mình (Giả sử rằng bạn sử dụng bash).

Hoặc thậm chí đơn giản và chuyên nghiệp hơn, bạn có thể sử dụng Laravel Homestead.

Đây là một liên kết đến tài liệu chính thức: http://laravel.com/docs/5.0/homestead

Ngoài ra Jeffrey có một hướng dẫn miễn phí về nó: https://laracasts.com/series/laravel-5-fundamentals/episodes/2

Tôi khuyên bạn nên đi với nhà dân vì bạn sẽ cài đặt sẵn tất cả các công cụ sau đây.

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • Nginx
  • MySQL
  • Bưu điện
  • Nút (Với Bower, Grunt và Gulp)
  • Redis
  • Ghi nhớ
  • Đậu bắp
  • Đặc phái viên
  • Vải + HipChat mở rộng

10

Mở rộng trên @JetLaggy:

Sau khi thử lại nhiều lần để sửa đổi .bash_profile với thư mục MAMP, tôi đã thay đổi quyền truy cập tệp cho thư mục MAMP php và có thể nhận được 'mà php' để hiển thị thư mục phù hợp. Rắc rối là các chức năng khác không hoạt động, chẳng hạn như 'php -v'.

Vì vậy, tôi đã cập nhật MAMP. http://documentation.mamp.info/en/mamp/installation/updating-mamp

Điều này đã lừa cho thiết lập cụ thể của tôi. Tôi đã phải điều chỉnh PATH của mình để phản ánh phiên bản cập nhật của PHP, nhưng một khi tôi đã làm, mọi thứ đều hoạt động!


9

Trên OS X

Sử dụng MAMP

Nhập lệnh which php trong terminal để xem phiên bản PHP nào bạn đang sử dụng. Nếu đó không phải là phiên bản PHP từ MAMP, biến $ PATH được Bash sử dụng sẽ cần phải được cập nhật.

Trước tiên, bạn nên sử dụng lệnh "cd / Ứng dụng / MAMP / bin / php" để kiểm tra phiên bản php nào từ MAMP và ghi chú phiên bản (ví dụ: php5.6.7).

Khi bạn biết phiên bản, bạn nên chỉnh sửa ~/.bash_profiletệp (nghĩa là tệp .bash_profilecó trong thư mục chính của bạn) và thêm một dòng xuất:

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

Đảm bảo rằng bạn thay thế php5.6.7 bằng phiên bản PHP mà bạn đã chọn trong MAMP.

Khi tệp đã được lưu, hãy đảm bảo rằng bạn đóng Đóng Terminal và mở lại. Một khi điều đó đã được thực hiện, bạn sẽ sử dụng PHP đi kèm với MAMP.


Một cách để dễ dàng tìm thấy dòng nên là gì mà bạn cần đặt bên trong .bash_profilelà chạy lệnh sau bên trong thiết bị đầu cuối của bạn:

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

Sao chép và dán ba dòng đó vào thiết bị đầu cuối của bạn sẽ xuất chính xác phiên bản PHP đã được chọn bên trong bảng điều khiển MAMP.

Sử dụng Homebrew / MacPorts

Đảm bảo rằng pathchứa /usr/local/bin/(Homebrew) hoặc /opt/local/bin(MacPorts) của bạn nếu bạn đang sử dụng PHP đi kèm với một trong hai trình quản lý gói này.

Kiểm tra đường dẫn PHP bằng MacPorts

Bạn có thể tìm vị trí chính xác của PHP bằng MacPorts bằng lệnh sau:

port contents php70 | grep bin/php

Lưu ý rằng bạn nên thay thế php70bằng phiên bản PHP mà bạn đã cài đặt.

Kiểm tra đường dẫn PHP với Homebrew-php

Homebrew-php ( https://github.com/Homebrew/homebrew-php ) là một vòi có nhiều phiên bản PHP khác nhau.

Bạn có thể tìm vị trí chính xác của PHP bằng Homebrew bằng lệnh sau:

brew --prefix homebrew/php/php56

Lưu ý rằng bạn nên thay thế php56bằng phiên bản PHP mà bạn đã cài đặt.


6

trong 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

hoặc là

sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt

5

Nếu bạn đang sử dụng Z Shell, chỉ cần làm như sau:

  1. Thiết bị đầu cuối mở
  2. sudo nano ~/.zshrc
  3. Dán cái này; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
  4. Tiết kiệm
  5. Chạy source ~/.zshrc
  6. Chạy which php - bạn sẽ nhận được đường dẫn MAMP 5.6.10

5.6.10 là phiên bản PHP bạn đặt trong MAMP.


3

OSX với bia

$ brew install mcrypt php70-mcrypt

Tôi đang chạy PHP 7.0.x, vì vậy hãy thay đổi "php70" thành phiên bản của bạn, nếu bạn đang sử dụng một phiên bản khác.
Như đã nêu trong các câu trả lời khác, bạn có thể thấy phiên bản php của mình với $ php -v.


3

Đối với những người vẫn đến đây ngày hôm nay:

Laravel không cần mcryptgia hạn nữa .mcryptđã lỗi thời, bản cập nhật cuối cùng cho libmcrypt là vào năm 2007. Laravel 4.2 cũng đã lỗi thời và không còn hỗ trợ nữa. Giải pháp tốt nhất (= an toàn) là cập nhật lên Laravel> 5.1 (không có LTS trước Laravel 5.2).

Mcrypt đã bị xóa khỏi Laravel vào tháng 6 năm 2015: https://github.com/laravel/framework/pull/9041


Tôi đã khắc phục sự cố của mình bằng cách chạy cung cấp homestead

0

sudo php cài đặt mcrypt

sudo php5enmod mcrypt


1
Mặc dù nhận xét của bạn về mặt kỹ thuật có thể đúng, chúng tôi cố gắng đưa ra một số lời giải thích cho câu trả lời của bạn ở đây trên StackOverflow. Hơn nữa, có vẻ như OP đã được cài đặt mcrypt, bạn có thể mở rộng lý do tại sao bạn tin rằng điều này sẽ khắc phục vấn đề của OP không?
milo526

0

trong phiên bản Ubuntu 14.04 dựa trên phiên bản php của bạn: 5.6,7.0,7.1,7.2,7.3

sudo apt-get cài đặt php {phiên bản} -mcrypt

sudo apt-get install php7.1-mcrypt

sudo phpenmod mcrypt 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.