Как я могу установить mcrypt под PHP7? Ларавелю это нужно

Поскольку Laravel4 требует расширения mcrypt, а PHP7, похоже, не имеет расширения mcrypt, есть ли обходной путь для этого?


person Bishal Paudel    schedule 04.12.2015    source источник
comment
Вы отметили Laravel 5.1, новейшую версию Laravel. Для работы не требуется mcrypt. См. laravel.com/docs/5.1/installation для справки о том, что вам нужно.   -  person Joel Hinz    schedule 04.12.2015
comment
Вы могли бы установить его? Обычно это обходной путь, когда вам не хватает библиотеки.   -  person Damien Pirsy    schedule 04.12.2015
comment
@JoelHinz Я изменил на Laravel 4.   -  person Bishal Paudel    schedule 04.12.2015
comment
@DamienPirsy Спасибо, попробую установить вручную.   -  person Bishal Paudel    schedule 04.12.2015
comment
если вы используете Centos webtatic.com/packages/php70   -  person astroanu    schedule 04.12.2015
comment
Лучше не использовать mcrypt, это заброшенное ПО, оно не обновлялось годами и не поддерживает стандартное заполнение PKCS#7 (урожденное PKCS#5), только нестандартное заполнение нулями, которое нельзя использовать даже с двоичными данными. . mcrypt имеет много нерешенных ошибок, относящихся к 2003 году. Расширение mcrypt устарело и будет удалено. в PHP 7.2. Вместо этого рассмотрите возможность использования defuse или RNCryptor, они обеспечивают полное решение, поддерживаются и являются правильными.   -  person zaph    schedule 12.06.2017


Ответы (9)


Была такая же проблема - в PHP7 отсутствовал mcrypt.

Это сработало для меня. При появлении запроса сохраните локальные файлы конфигурации PHP.

sudo apt-get update
sudo apt-get install mcrypt php7.0-mcrypt
sudo apt-get upgrade

Перезапустите FPM (или Apache, NGINX и т. д.) после установки.

person Ryderpro    schedule 16.02.2016
comment
Я должен был сделать это первым sudo add-apt-repository ppa:ondrej/php - person user985366; 01.06.2016
comment
@ user985366 спасибо ... да, мы должны сделать это sudo add-apt-repository ppa:ondrej/php, а затем sudo apt-get update sudo apt-get install mcrypt php7.0-mcrypt sudo apt-get upgrade, и тогда у меня это сработало - person Osama Al-Banna; 20.08.2016
comment
@Ryderpro Нужно ли нам устанавливать mcrypt, когда мы уже получаем php7.0-mcrypt? Или это две совершенно разные вещи? - person enchance; 15.12.2016

Я на Mac и с камердинером laravel я решил это:

варить установить php70-mcrypt

person carlituxman    schedule 11.06.2016

Эта проблема может возникнуть, даже если вы включите mcrypt в php.ini. Попробуйте выполнить следующие действия.

sudo apt-get update
sudo apt-get install mcrypt php7.0-mcrypt

Я работаю в Ubuntu 16.04, и мне также помогли следующие команды.

whereis php  -shows the files with this name
php -v   -shows the php version
which php -shows current php version that is running on the server
person Hemantha    schedule 02.07.2016

В Ubuntu: Согласно launchpad.net, пакет для mcrypt называется php7.0- мкрипт.

sudo apt-get install php7.0-mcrypt установить

person Sorin    schedule 18.01.2017

Откройте терминал с помощью Ctrl + Alt + T и выполните следующие команды для PHP7.0 в Ubuntu 16.4.

sudo apt-get install mcrypt php7.0-mcrypt
sudo service apache2 restart
person Behind Methods    schedule 12.06.2017

В php7 есть mcrypt, его можно включить в php.ini и тогда все будет нормально работать.

person fico7489    schedule 04.12.2015
comment
Не могли бы вы уточнить, как мне установить PHP7 Mcrypt? Я пытался найти, есть ли у PHP7 расширение Mcrypt, но безрезультатно. PHP5 имел Mcrypt как php5-mcrypt, который можно легко включить и отключить с помощью php5enmod и php5dismod соответственно. - person Bishal Paudel; 04.12.2015
comment
В /etc/php/7.0/cli/conf.d/20-mcrypt.ini вы должны проверить, что расширение включено: extension=mcrypt.so, а не ;extension=mcrypt.so - person user3707264; 29.09.2016

сделать так:

  1. wget http://jp2.php.net/distributions/php-7.0.3.tar.gz
  2. tar zxf php-7.0.3.tar.gz
  3. cd php-7.0.3/ext/mcrypt
  4. /php7-path/bin/phpize (при ошибке, такой как configure: error: mcrypt.h not found. Please reinstall libmcrypt запустить apt-get install libmcrypt-dev)
  5. ./configure --with-php-config=/php7-path/bin/php-config
  6. (sudo) make && make install .это установит mcrypt.so в php-7.0.3/ext/mcrypt/modules
  7. cp в /usr/lib/php/20151012/ что такое общий каталог расширений
  8. создайте mcrypt.ini в /etc/php/mods-available/ напишите как extension=mcrypt.so
  9. создайте ссылку на это, например, sudo ln -s /etc/php/mods-available/mcrypt.ini 20-mcrypt.ini в /etc/php/7.0/fpm/conf.d
  10. создайте ссылку на это, например, sudo ln -s /etc/php/mods-available/mcrypt.ini 20-mcrypt.ini в /etc/php/7.0/cli/conf.d
  11. sudo service nginx restart
  12. sudo service php7.0-fpm restart
  13. Да, это так.
person devqin    schedule 02.03.2016
comment
Это сработало для меня, когда ppa для установки через apt-get не работал, так что спасибо! Было бы здорово, если бы вы могли исправить форматирование в своем ответе, хотя это немного сложно понять. - person Tom Davies; 12.05.2016

Я использую Dotdeb, дополнительный репозиторий, предоставляющий новейшие всевозможные классные игрушки для ваших серверов Debian, таких как Nginx, PHP, MySQL, Redis и т. д.

  1. Обновите sources.list

    deb http://packages.dotdeb.org {distribution} all 
    deb-src http://packages.dotdeb.org {distribution} all
    
  2. Ключи GnuPG

    wget https://www.dotdeb.org/dotdeb.gpg
    sudo apt-key add dotdeb.gpg
    
  3. Обновите apt и создайте что-то потрясающее.

    sudo apt-get update
    
person joshuamabina    schedule 03.01.2017

PHP7 содержит внутреннее расширение mcrypt (source-path/ext/mcrypt/). Но это зависит от софта Libmcrypt.

Шаг 1.

Загрузите libmcrypt-x.x.tar.gz с http://mcrypt.sourceforge.net/ и соберите его.

cd libmcrypt-x.x
./configure
make
make install

Шаг 2.

Пересоберите PHP7 из исходников и добавьте опцию --with-mcrypt.

./configure ... --with-mcrypt

Другой способ без пересборки PHP7

cd php7-source-path/ext/mcrypt/
/php7-path/bin/phpize
./configure --with-php-config=/php7-path/bin/php-config
make && make install
echo "extension=mcrypt.so" >> /php7-path/ext/php.ini

Перезапустите php

person eaglewu    schedule 25.12.2015