2016-04-13 3 views
0

Привет Я уже установил CometChat, но я столкнулся следующее сообщение об ошибке:Вызов неопределенной функции mcrypt_decrypt() - CometChat Laravel

Call to undefined function mcrypt_decrypt() in /home/vagrant/changeglobe/public/cometchat/integration.php on line 89 

Я использую Homestead с Nginx для Laravel. Я читал во многих местах, что мне нужно включить mycrypt, но не нашел правильного. Если вы знаете, сообщите мне об этом. Спасибо.

+0

'php5-mcrypt' должен быть установлен _and_ включен. Проверьте файл 'php.ini', чтобы убедиться, что он включен (раскомментирован). – camelCase

+0

Лучше не использовать mcrypt, он является отказом, не обновлялся годами и не поддерживает стандартное дополнение PKCS # 7, только нестандартное нулевое заполнение, которое нельзя даже использовать с двоичными данными. Вместо этого рассмотрите использование [defuse] (https://github.com/defuse/php-encryption), оно поддерживается и является правильным. – zaph

ответ

0

Попробуйте заменить функцию getUserID() в файле /cometchat/integration.php на код ниже:

function getUserID() { 
     $userid = 0; 
     if (!empty($_SESSION['basedata']) && $_SESSION['basedata'] != 'null') { 
      $_REQUEST['basedata'] = $_SESSION['basedata']; 
     } 

     if (!empty($_REQUEST['basedata'])) { 
      if (function_exists('mcrypt_encrypt') && defined('ENCRYPT_USERID') && ENCRYPT_USERID == '1') { 
       $key = ""; 
       if(defined('KEY_A') && defined('KEY_B') && defined('KEY_C')){ 
        $key = KEY_A.KEY_B.KEY_C; 
       } 
       $uid = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode(rawurldecode($_REQUEST['basedata'])), MCRYPT_MODE_CBC, md5(md5($key))), "\0"); 
       if (intval($uid) > 0) { 
        $userid = $uid; 
       } 
      } else { 
       $userid = $_REQUEST['basedata']; 
      } 
     } 

     if (!empty($_COOKIE['laravel_session'])) { 
      $session= cookie_decrypt($_COOKIE['laravel_session']);   
      $data = file_get_contents(dirname(dirname(dirname(__FILE__))).'/storage/framework/sessions/'.$session); 
      if (!empty($data)) { 
       $k = explode(';i:',$data); 
       $m = explode(';s:',$k[1]); 
       $userid = $m[0]; 
      } 
     } 
     $userid = intval($userid); 
     return $userid; 
    } 

Если вы по-прежнему сталкиваются с проблемами, пожалуйста, создать тикет https://my.cometchat.com/tickets и наша команда будет помогать вам.

+0

По-прежнему такая же ошибка – Siddharth