yum install mcrypt error [duplicate]

Что такое NullPointerException?

Хорошим местом для начала является JavaDocs . Они охватывают это:

Брошено, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  • Вызов метода экземпляра нулевого объекта.
  • Доступ или изменение поля нулевого объекта.
  • Выполнение длины null, как если бы это был массив.
  • Доступ или изменение слотов с нулевым значением, как если бы это был массив.
  • Бросать нуль, как если бы это было значение Throwable.

Приложения должны бросать экземпляры этого класса для указания других незаконных видов использования нулевого объекта.

Также, если вы попытаетесь использовать нулевую ссылку с synchronized, который также выдаст это исключение, за JLS :

SynchronizedStatement:
    synchronized ( Expression ) Block
  • В противном случае, если значение выражения равно null, NullPointerException.

Как это исправить?

Итак, у вас есть NullPointerException. Как вы это исправите? Возьмем простой пример, который выдает NullPointerException:

public class Printer {
    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public void print() {
        printString(name);
    }

    private void printString(String s) {
        System.out.println(s + " (" + s.length() + ")");
    }

    public static void main(String[] args) {
        Printer printer = new Printer();
        printer.print();
    }
}

Идентифицирует нулевые значения

. Первый шаг - точно определить , значения которого вызывают исключение . Для этого нам нужно выполнить некоторую отладку. Важно научиться читать stacktrace . Это покажет вам, где было выбрано исключение:

Exception in thread "main" java.lang.NullPointerException
    at Printer.printString(Printer.java:13)
    at Printer.print(Printer.java:9)
    at Printer.main(Printer.java:19)

Здесь мы видим, что исключение выбрано в строке 13 (в методе printString). Посмотрите на строку и проверьте, какие значения равны нулю, добавив протоколирующие операторы или используя отладчик . Мы обнаруживаем, что s имеет значение null, а вызов метода length на него вызывает исключение. Мы видим, что программа перестает бросать исключение, когда s.length() удаляется из метода.

Трассировка, где эти значения взяты из

Затем проверьте, откуда это значение. Следуя вызовам метода, мы видим, что s передается с printString(name) в методе print(), а this.name - null.

Трассировка, где эти значения должны быть установлены

Где установлен this.name? В методе setName(String). С некоторой дополнительной отладкой мы видим, что этот метод вообще не вызывается. Если этот метод был вызван, обязательно проверьте порядок , что эти методы вызывают, а метод set не будет называться после методом печати. ​​

Этого достаточно, чтобы дать нам решение: добавить вызов printer.setName() перед вызовом printer.print().

Другие исправления

Переменная может иметь значение по умолчанию setName может помешать ему установить значение null):

private String name = "";

Либо метод print, либо printString может проверить значение null например:

printString((name == null) ? "" : name);

Или вы можете создать класс, чтобы name всегда имел ненулевое значение :

public class Printer {
    private final String name;

    public Printer(String name) {
        this.name = Objects.requireNonNull(name);
    }

    public void print() {
        printString(name);
    }

    private void printString(String s) {
        System.out.println(s + " (" + s.length() + ")");
    }

    public static void main(String[] args) {
        Printer printer = new Printer("123");
        printer.print();
    }
}

См. также:

Я все еще не могу найти проблему

Если вы попытались отладить проблему и до сих пор не имеете решения, вы можете отправить вопрос для получения дополнительной справки, но не забудьте включить то, что вы пробовали до сих пор. Как минимум, включите stacktrace в вопрос и отметьте важные номера строк в коде. Также попробуйте сначала упростить код (см. SSCCE ).

56
задан Peter Mortensen 9 April 2014 в 19:20
поделиться

17 ответов

Просто возглавьте кого-нибудь, кого это интересует. Я смог понять это. Это было намного проще, чем я думал. Под менеджером WHM перейдите по адресу: Главная страница >> Программное обеспечение >> EasyApache (Apache Update) >> Там у вас есть два варианта: «Профиль сборки» или «Настроить на основе профиля». Я пошел на Customize, чтобы сохранить текущую конфигурацию, а затем следовать инструкциям на странице. В конце концов было место для добавления и удаления php-модулей. Там вы найдете когда-нибудь модуль под солнцем. Просто выберите тот, который вы хотите, и перестройте профиль. Это было действительно так просто.

Надеюсь, это поможет кому-то!

6
ответ дан Scott Dawson 19 August 2018 в 02:36
поделиться
  • 1
    это действительно помогло мне. VOte для u. Но ждать. Мне кажется, все должно быть установлено через EasyApache. Команда yum является отключенной или что-то вроде этого. Можете ли вы поделиться своим опытом с этим – Phung D. An 11 August 2014 в 21:08
  • 2
    @PhamHuyAnh, что было давно. Из того, что я помню, я смог сделать все это через бэкэнд cpanel, как я уже говорил выше. Вам нужно будет запускать любые команды yum. – Scott Dawson 12 August 2014 в 18:31
  • 3
    Мне удалось пережить боль с Godaddy VPS. Пришлось использовать как EasyApache, так и yum ... Спасибо – Phung D. An 12 August 2014 в 22:50
  • 4
    Удивительная помощь. Я пробовал со всеми командами, а также с помощью пакета .rpm, но не работал с кем-либо, но когда я пытался с EasyApache, он работал как шарм. Отличная помощь для этого .... :) – AppAspect 26 February 2015 в 06:46
  • 5
    Ни один из лучших ответов не работал для меня. Это было сделано. – rick6 24 March 2015 в 16:17

Лучший способ:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/php-mcrypt-5.3.3-3.el6.x86_64.rpm
yum localinstall php-mcrypt-5.3.3-3.el6.x86_64.rpm

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/libmcrypt-2.5.8-9.el6.x86_64.rpm
yum localinstall libmcrypt-2.5.8-9.el6.x86_64.rpm

или перейти к: http://dl.fedoraproject.org/pub/epel/6/x86_64/ для соответствия ваша версия проверяется с вашего info.php, это нормально - сделано!

3
ответ дан Dimitrios 19 August 2018 в 02:36
поделиться

установка php-mcrypt из Repoforge отлично работала для меня. Просто добавьте Repoforge из http://repoforge.org/ и просто запустите yum install php-mcrypt.

1
ответ дан ElChupacabra 19 August 2018 в 02:36
поделиться
  • 1
    Спасибо! Это очень полезно. + extension = / usr / lib64 / php / modules / mcrypt.so из предыдущего сообщения – izumeroot 31 July 2014 в 15:59

Есть два способа решить эту проблему:

2
ответ дан Filippos Karapetis 19 August 2018 в 02:36
поделиться
  • 1
    Я смог установить libmcrypt, но не php-mcrypt, я все еще получаю ошибку: root @ ip-50-62-78-213 [/ tmp] # yum localinstall php-mcrypt-5.3.3-1.el6.x86_64. rpm Загруженные плагины: fastestmirror Настройка процесса локального пакета Просмотр php-mcrypt-5.3.3-1.el6.x86_64.rpm: php-mcrypt-5.3.3- 1.el6.x86_64 Нечего делать – Scott Dawson 14 June 2013 в 19:40
  • 2
    Спасибо, Филипп. Я искал способ установить php-mcrypt без необходимости обновления PHP (5.3.3), и загрузка из Fedora сделала трюк. – max 29 June 2014 в 03:25

Чтобы установить mcrypt из http://namhuy.net/641/centos-6-install-mcrypt-for-phpmyadmin.html

i386

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

x86_64

http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

, то просто используйте команду yum для установки пакета mcrypt

yum install php-mcrypt
3
ответ дан Gregory Marsh 19 August 2018 в 02:36
поделиться

Для меня мне пришлось добавить репозиторий EPEL. Именно здесь появился мой php-mcrypt:

[root@system ~]$ repoquery -i php-mcrypt

Name        : php-mcrypt
Version     : 5.3.3
Release     : 1.el6
Architecture: i686
Size        : 39225
Packager    : Fedora Project
Group       : Development/Languages
URL         : http://www.php.net/
Repository  : epel <----------
Summary     : Standard PHP module provides mcrypt library support
Source      : php-extras-5.3.3-1.el6.src.rpm
Description :
Standard PHP module provides mcrypt library support

Вы можете включить репо EPEL с инструкциями здесь:

http://fedoraproject.org/wiki / EPEL

1
ответ дан immulatin 19 August 2018 в 02:36
поделиться
  • 1
    EPEL помог мне заставить его работать на моем сервере, но ссылка на то, как установить EPEL, не помогла. Я дал ответ ниже, который показывает, как его установить, и ссылается на ссылку, которую я использовал. – James Oravec 31 August 2013 в 23:34

Если вы хотите перекомпилировать PHP с включением mcrypt.

1. Insatll mcrypt. libmcrypt-devel из хранилищ третьей стороны EPEL, поэтому вы должны:

yum --enablerepo=extras install epel-release
yum install libmcrypt-devel

2. Добавьте --with-mcrypt к вашим аргументам ./configure:

./configure --with-mcrypt

3. Сборка и установка:

make & make install
0
ответ дан isaacselement 19 August 2018 в 02:36
поделиться

У меня была такая же проблема, и я нашел, что предыдущие предложения дали мне достаточно информации, чтобы заставить ее работать на моем сервере. Следующее - это то, что я сделал:

1) Установить репозиторий EPEL (From: http://www.rackspace.com/knowledge_center/article/installing-rhel-epel-repo-on-centos -5x-or-6x ):

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

2) Установите его через:

yum update
yum install php-mcrypt*

yum update обновил ссылку репозитория на моем сервере, затем вторая команда получила то, что мне было нужно:)

3) Перезагрузите свой веб-сервер. Для моей установки apache я сделал:

service httpd restart
113
ответ дан James Oravec 19 August 2018 в 02:36
поделиться
  • 1
    Это сработало для меня. Благодарю. – music2myear 10 September 2013 в 19:56
  • 2
    Действительно полезно +1. благодаря – Sumit Bijvani 11 September 2013 в 18:22
  • 3
    В некоторых случаях вам нужно отредактировать файл «mcrypt.ini». файл (sudo nano /etc/php.d/mcrypt.ini) и добавьте строку «extension = / usr / lib64 / php / modules / mcrypt.so». Затем перезапустите службу httpd. – Fábio N Lima 14 October 2013 в 02:38
  • 4
    Мне пришлось запустить: yum install php53-mcrypt – danielson317 1 May 2014 в 22:43
  • 5
    Вам нужен только репозиторий epel. Репозиторий не нужен, если вы хотите установить mcrypt. – iWantSimpleLife 24 November 2014 в 09:38

Для меня это сработало: yum install php-mcrypt*, а затем перезапустите службу httpd service httpd restart

Я попробовал решение @VenomFangs, но первый шаг мне не нужен. У меня уже установлена ​​новая версия EPEL. Итак, первый шаг, следующий не был полезен, я поддержал моментальный снимок, который я сделал до внесения изменений, и я просто использовал команды для установки и перезагрузки выше.

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

Версия CentOS Linux 7.2.1511 (Core)

PS: Я знаю, что это не предмет, но если кому-то это нужно, ключевое слово может помочь. Мне нужно было сделать это из-за этой ошибки на prestashop. Два ключевых слова, которые я хотел бы использовать, чтобы найти эту информацию: «php_mycrypt.dll» «php_mcrypt.dll» Fatal error: Call to undefined function mcrypt_encrypt() in /classes/Rijndael.php on line 46

EDIT 10/06/2016: Еще одно решение Prestashop, чтобы попробовать «Расширенные параметры «Эффективность», «Шифрование» (FR: Chiffrement), "Use the custom BlowFish class." вместо "Use Rijndael with mcrypt lib. (you must install the Mcrypt extension)."

1
ответ дан Kilowog 19 August 2018 в 02:36
поделиться

У меня возникла слишком большая проблема при установке php-mcrypt с использованием epel-release-6-8.noarch.rpm.

Затем я попытался по-другому.

Получите php-mcrypt, используя «wget ftp://ftp.univie.ac.at/ system / linux / fedora / epel / 6 / x86_64 / php-mcrypt-5.3.3-3.el6.x86_64.rpm ".

Затем установите libmcrypt

ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/epel/6/x86_64/libmcrypt-2.5.8-9.el6.x86_64.rpm

Установленный php-mcrypt с использованием следующей команды

yum install php-mcrypt-5.3.3-3.el6.x86_64.rpm
4
ответ дан Manoj Borah 19 August 2018 в 02:36
поделиться

У меня была такая же проблема в centos 6.5

Окончательное решение ниже работало для меня

-go до http://dl.fedoraproject.org/pub/epel / 6 / x86_64 / -иск для php-mcrypt ( http://dl.fedoraproject.org/pub/epel/6/x86_64/php-mcrypt-5.3.3-3.el6.x86_64 .rpm ) -execute wget http://dl.fedoraproject.org/pub/epel/6/x86_64/php-mcrypt-5.3.3-3.el6.x86_64.rpm -rpm -ivh php-mcrypt-5.3.3-3.el6.x86_64.rpm

, если есть какие-либо зависимости, которые вы можете скачать с помощью http://dl.fedoraproject.org/pub / EPEL / 6 / x86_64 /

0
ответ дан Maulik Shah 19 August 2018 в 02:36
поделиться

Для меня ответ был:

1) Получить репозиции из

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

2) Установить его через:

sudo yum update
sudo yum install php-mcrypt*

3) Отредактируйте mcrypt.ini

sudo nano /etc/php.d/mcrypt.ini

добавьте это

extension=/usr/lib64/php/modules/mcrypt.so

Наконец 4) Перезагрузите ваш веб-сервер:

sudo service httpd restart

Я запускаю эти шаги в CentOS 6.3 (64) на Azure Из образа Microsoft Linux

Надеюсь, он вам поможет.

С наилучшими пожеланиями.

26
ответ дан Nishu Tayal 19 August 2018 в 02:36
поделиться
  • 1
    Очень полезно! Спасибо чувак!! – Fábio N Lima 14 October 2013 в 02:36
  • 2
    для меня не было необходимости, по крайней мере для меня, изменить расширение. – Marcelo 12 March 2014 в 18:52
  • 3
    Потрясающие! Работал как шарм. – NightKnight on Cloudinsidr.com 17 November 2015 в 16:09
yum install php-mcrypt.x86_64

работал для меня вместо

yum install php-mcrypt
9
ответ дан sariDon 19 August 2018 в 02:36
поделиться

Сначала узнайте свою версию PHP. В моем случае 5.6.

php --version

PHP 5.6.27 (cli) (built: Oct 15 2016 21:31:59) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Затем:

sudo yum search mcrypt

И выберите лучший один для вашей версии из списка, я использовал php56w-mcrypt.

  $ sudo yum search mcrypt
  Loaded plugins: fastestmirror
  Loading mirror speeds from cached hostfile

  ..... output truncated ....

libmcrypt-devel.i686 : Development libraries and headers for libmcrypt
libmcrypt-devel.x86_64 : Development libraries and headers for libmcrypt
libtomcrypt-devel.i686 : Development files for libtomcrypt
libtomcrypt-devel.x86_64 : Development files for libtomcrypt
libtomcrypt-doc.noarch : Documentation files for libtomcrypt
php-mcrypt.x86_64 : Standard PHP module provides mcrypt library support
php55w-mcrypt.x86_64 : Standard PHP module provides mcrypt library support

# either of these are fine:
php56-php-mcrypt.x86_64 : Standard PHP module provides mcrypt library support
php56w-mcrypt.x86_64 : Standard PHP module provides mcrypt library support

php70-php-mcrypt.x86_64 : Standard PHP module provides mcrypt library support
php70w-mcrypt.x86_64 : Standard PHP module provides mcrypt library support
php71-php-mcrypt.x86_64 : Standard PHP module provides mcrypt library support
libmcrypt.i686 : Encryption algorithms library
libmcrypt.x86_64 : Encryption algorithms library
libtomcrypt.i686 : A comprehensive, portable cryptographic toolkit
libtomcrypt.x86_64 : A comprehensive, portable cryptographic toolkit
mcrypt.x86_64 : Replacement for crypt()
```

Наконец:

sudo service httpd restart

0
ответ дан sijpkes 19 August 2018 в 02:36
поделиться

Для установки php 7 для запуска mcrypt:

Centos: sudo yum install php7.0-mcrypt для установки

На Ubuntu: sudo apt-get install php7.0-mcrypt

0
ответ дан Sorin 19 August 2018 в 02:36
поделиться

Обновлен ответ для centos 7

 ## RHEL/CentOS 7 64-Bit ##
 # wget http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm
 # rpm -ivh epel-release-7-0.2.noarch.rpm

Для CentOS 6

 ## RHEL/CentOS 6 32-Bit ##
 # wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
 # rpm -ivh epel-release-6-8.noarch.rpm

 ## RHEL/CentOS 6 64-Bit ##
 # wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
 # rpm -ivh epel-release-6-8.noarch.rpm

Установить

 yum install php-mcrypt

Изменить: просмотр комментариев для обновленных репозиториев.

11
ответ дан TylersSN 19 August 2018 в 02:36
поделиться
  • 1
    http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm не работает ... – zhkzyth 19 October 2014 в 19:59
  • 2
    Да, ссылка выше не работает, так как это бета-версия. Так что я избегаю вставки ссылки, которая скоро устареет, вероятно, лучше, если вы перейдете в dl.fedoraproject.org/pub/epel/7/x86_64/e и загрузите последнюю версию epel- выпуск – Amati 20 October 2014 в 20:15
  • 3
    Просто используйте yum -y install epel-release && yum -y install php-mcrypt – jornane 8 February 2016 в 11:15

Если php_mcrypt установлен на 64-битном языке, но отсутствует у установщика, проверьте путь расширения:

vi /etc/php.d/mcrypt.ini

; Enable mcrypt extension module
;extension=module.so
extension=/usr/lib64/php/modules/mcrypt.so
3
ответ дан user2599431 19 August 2018 в 02:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: