Intereting Posts

проблема с установкой mcrypt

Я попросил администраторов системы установить mcrypt на сервере, и они говорят, что все в порядке. Но когда я запускаю свой простой скрипт, я получаю это.

Предупреждение: mcrypt_get_iv_size () [function.mcrypt-get-iv-size]: Ошибка инициализации модуля

Это происходит из этой строки:

$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB); 

Теперь, из этого кода:

 $algorithms = mcrypt_list_algorithms("/usr/local/bin/mcrypt"); foreach ($algorithms as $cipher) { echo "$cipher<br />\n"; } 

Я получил:

Предупреждение: mcrypt_list_algorithms () [function.mcrypt-list-algorithmms]: алгоритмов, найденных в модуле dir

Когда я запускаю это:

 $modes = mcrypt_list_modes("/usr/local/bin/mcrypt"); foreach ($modes as $mode) { echo "$mode <br />\n"; } 

Я получил:

Предупреждение: mcrypt_list_modes () [function.mcrypt-list-modes]: в модуле нет режимов

Однако, выполняя эту команду, эта команда

 which mcrypt; mcrypt -v 

Производит:

 /usr/local/bin/mcrypt Mcrypt v.0.9.9 (x86_64-unknown-linux-gnu) Linked against libmcrypt v.2.5.7 Copyright (C) 1998-2002 Nikos Mavroyanopoulos (nmav@gnutls.org) 

Правильно ли установлен / настроен mcrypt ?

ОБНОВИТЬ:

Я сделал это:

 whereis libmcrypt 

… и получил результат:

 libmcrypt: /usr/local/lib/libmcrypt /usr/local/lib/libmcrypt.so /usr/local/lib/libmcrypt.la 

Я также изменил:

 $modes = mcrypt_list_modes("/usr/local/bin/mcrypt"); 

чтобы …

 $modes = mcrypt_list_modes("/usr/local/lib/libmcrypt"); $algorithms = mcrypt_list_algorithms("/usr/local/lib/libmcrypt"); 

Как рекомендовано, но все равно получите ошибку:

Предупреждение: mcrypt_list_modes () [function.mcrypt-list-modes]: в модуле dir отсутствуют режимы

Затем я вошел в файловый менеджер в моем CPanel в /usr/local/lib/libmcrypt . Каталог существует, но в нем нет файлов …

Вот экран печати файлового менеджера.

Благодарю.

Попробуйте это для своей проблемы с mcrypt:

 mv -i /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/ sudo php5enmod mcrypt sudo service apache2 restart 

Это ошибка с расположением файла mcrypt.ini.

У меня была такая же ошибка, я сделал cp вместо mv, чтобы убедиться, но это решило проблему.

Если PHP не работает, если вы получаете работу phpmyadmin (даже с ошибкой mcrypt), это означает, что PHP работает (потому что phpmyadmin использует PHP). Но в вашем примере

 <? echo $row['details']; ?> 

изменить <? до <?php и повторите попытку?

На Ubuntu 14.04 просто нужно сделать всего три шага как sudo:

 apt-get install php5-mcrypt php5enmod mcrypt service apache2 restart 

Каталог алгоритмов mcrypt должен быть каталогом, содержащим алгоритмы, а не двоичным . Это означает, что это:

 $modes = mcrypt_list_modes("/usr/local/bin/mcrypt"); 

Должно быть это вместо этого (предполагается, что mcrypt установлен /usr/local/lib/libmcrypt ):

 $modes = mcrypt_list_modes("/usr/local/lib/libmcrypt"); 

Если каталог, в котором установлен libmcrypt выше, вам необходимо обновить настройку php.ini . Взято из php.ini :

 [mcrypt] ; Directory where to load mcrypt algorithms ; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt) ;mcrypt.algorithms_dir= ; Directory where to load mcrypt modes ; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt) ;mcrypt.modes_dir= 

Если у вас есть доступ к оболочке, вы можете попробовать эту команду, чтобы найти каталог lib для вашей установки mcrypt:

 whereis libmcrypt 

или…

 whereis mcrypt 

В зависимости от вашей настройки.

У меня была точно такая же проблема.

 > mcrypt -v Mcrypt v.0.9.9 (sparc-sun-solaris2.10) Linked against libmcrypt v.2.5.8 > mcrypt --list-hash Supported Hash Algorithms: crc32 md5 sha1 haval256 ripemd160 tiger gost [...] > php CryptoTest.php PHP Warning: mcrypt_list_modes(): No modes found in module dir in [...] 

Он был решен путем реконфигурации и перекомпиляции libmcrypt с этими параметрами:

 ./configure --prefix=$YOUR_PATH/libmcrypt --enable-dynamic-loading --disable-posix-threads 

Затем в вашем php.ini:

 mcrypt.algorithms_dir=<YOUR_PATH>/libmcrypt/lib/libmcrypt mcrypt.modes_dir=<YOUR_PATH>/libmcrypt/lib/libmcrypt 

Как установить mcrypt на MAC OSX:

Привет, протестирован и работает на Mac OSX El Capitan:

1. Загрузите mcrypt: http://www.viames.it/download/elcapitan/mcrypt.so

2. Поместите его в:

/ USR / Библиотека / PHP / расширения / Mcrypt

3. Измените свой 'php.ini'

/etc/php.ini

и добавьте следующую строку:

 extension = /usr/lib/php/extensions/mcrypt.so 

4. Проверьте, загружена ли «mcrypt» следующей командой:

php -m

Результат консоли php -m

5. Создайте «phpinfo.php» с контентом:

 <?php echo phpinfo(); ?> 

и посмотрите, включен ли mcrypt:

phpinfo () теперь показывает mcrypt для загрузки

Да, я знаю, что я гангста.

Архитектура: Centos 6 / Apache 2.2 / Двойная установка PHP (5.3 и 5.4)

UPDATE: это решение объясняет, как вручную установить модуль mcrypt с помощью PHP 5.4 из RPM Remi на Centos 6, но для этого RPM требуется glibc-2.14 +, поэтому этого недостаточно, чтобы заставить его работать, если ваш glibc старше этого.

В моей конфигурации Yum install php-mcrypt* показанный как установленная версия для 5.3 в обычном корне:

 php-mcrypt.x86_64 5.3.3-5.el6 @epel 

Однако 5.4 chrooted в /opt/rh/php54

Простое копирование модулей 5.3 и файлов конфигурации не работает . Модуль не выполняет инициализацию, поэтому он не отображается в phpinfo (), это можно проверить с помощью

 /opt/rh/php54/root/usr/bin/php -v 

Решение, которое сработало для меня, – загрузить RPM Remi (хотя его обычно проще установить, добавив его репозиторий Yum, как описано в комментариях) ( https://www.rpmfind.net/linux/RPM/remi/fedora/ 25 / x86_64 / php54-php-mcrypt-5.4.45-12.fc25.remi.x86_64.html )

 wget ftp://fr2.rpmfind.net/linux/remi/fedora/25/remi/x86_64/php54-php-mcrypt-5.4.45-12.fc25.remi.x86_64.rpm 

извлеките файлы с помощью RPM2CPIO:

 rpm2cpio php54-php-mcrypt-5.4.45-12.fc25.remi.x86_64.rpm |cpio -idmv ./opt/remi/php54/root/etc/php.d/mcrypt.ini ./opt/remi/php54/root/usr/lib64/php/modules/mcrypt.so 98 blocks 

И скопируйте в папку chroot

 cp ./opt/remi/php54/root/etc/php.d/mcrypt.ini /opt/rh/php54/root/etc/php.d/mcrypt.ini cp ./opt/remi/php54/root/usr/lib64/php/modules/mcrypt.so /opt/rh/php54/root/usr/lib64/php/modules/ 

Проверять:

 /opt/rh/php54/root/usr/bin/php -v 

А также:

 <html> <body> <?php phpinfo(); ?> </body> </html>