2016-12-09 10 views
0

Apache/2.4.23 (Win64) PHP/7.1.0PHPMYADMIN ошибка Mcrypt на PHP7.1

PhpMyAdmin: 4.6.5.2

ошибки Изображение:

Любая идея ?

+0

Скопируйте и вставьте сообщение об ошибке. Таким образом, читать гораздо легче. Это также делает ваш вопрос полным, даже если эта ссылка становится недействительной. Другие могут сделать поиск в Интернете сообщения об ошибке и найти ваш вопрос и, надеюсь, ответы здесь. Вы также можете включить то, что вы сделали, чтобы произвести эту ошибку. – Robert

+0

Функция mcrypt_list_algorithms() устарела и mcrypt_module_open() устарела –

+0

Лучше всего не использовать mcrypt, она оставалась без изменений уже почти десять лет. Поэтому он устарел и будет удален из ядра и в PECL в PHP 7.2. Он не поддерживает стандартное дополнение PKCS # 7 (née PKCS # 5), только нестандартное нулевое заполнение, которое нельзя даже использовать с двоичными данными. В mcrypt есть много выдающихся [ошибок] (https://sourceforge.net/p/mcrypt/bugs/), относящихся к 2003 году. Вместо этого подумайте об использовании [defuse] (https://github.com/defuse/php-encryption) или [RNCryptor] (https://github.com/RNCryptor), они обеспечивают полное решение, поддерживаются и верны. – zaph

ответ

0

в php.ini error_reporting = E_ALL & ~ E_DEPRECATED

Если не работает, то есть, жесткий метод - изменение кода PhpMyAdmin. set_error_handler в phpMyadmin не учитывает error_reporting.

Чтобы исключить E_DEPRECATED, в ../phpMyadmin/libraties/ErrorHandler.php

изменение этого метода

public function handleError($errno, $errstr, $errfile, $errline) 
{ 
if (error_reporting() == 0 || $ Errno == E_DEPRECATED) { // added – $errno == E_DEPRECATED 
return; 
} 

$this->addError($errstr, $errno, $errfile, $errline, true); 
} 
+0

[link] (https://wiki.php.net/rfc/mcrypt-viking-funeral) – AlexP0708

+0

@ TheReduxPL Лучше дать свой собственный ответ – Danh

3

Это была проблема, связанная с совместимостью такой новой PHP версии, технически с library function что phpMyAdmin использует для различных функций шифрования.

The problem was fixed в PhpMyAdmin и будет частью следующего выпуска (который будет PhpMyAdmin 4.6.6)

1

Просто, чтобы добавить к ответу Алекса, код имеет опечатку, что делает его недействительным, он должен выглядеть следующим образом :

public function handleError($errno, $errstr, $errfile, $errline) 
{ 
    if (error_reporting() == 0 || $errno == E_DEPRECATED) { // added – $errno == E_DEPRECATED 
     return; 
    } 
    $this->addError($errstr, $errno, $errfile, $errline, true); 
} 
+0

стоит отметить - это решение работает, если изменение настроек error_reporting в php.ini не Работа. –