2014-12-24 62 views
17

我通過AppServ使用mcrypt_get_iv_size函數時發現問題。php - 致命錯誤:調用AppServ中的未定義函數mcrypt_get_iv_size()

我試圖找到與解決問題有關的主題。

但是,我嘗試將libmcrypt.dll下載到symtem32中,並通過從;extension=php_mcrypt.dll刪除評論到extension=php_mcrypt.dll來編輯php.ini。然後重新啓動apache。

不幸的是,重新加載頁面後看到修改後的結果。

它仍然誤差

Fatal error: Call to undefined function mcrypt_get_iv_size() in C:\AppServ\www\folder\index.php on line 36

函數包含以下內容:

class Encryption { 
    var $skey  = "SuPerEncKey2010"; // you can change it 

    public function safe_b64encode($string) { 

     $data = base64_encode($string); 
     $data = str_replace(array('+','/','='),array('-','_',''),$data); 
     return $data; 
    } 

    public function safe_b64decode($string) { 
     $data = str_replace(array('-','_'),array('+','/'),$string); 
     $mod4 = strlen($data) % 4; 
     if ($mod4) { 
      $data .= substr('====', $mod4); 
     } 
     return base64_decode($data); 
    } 

    public function encode($value){ 

     if(!$value){return false;} 
     $text = $value; 
     $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); 
     $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); 
     $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $text, MCRYPT_MODE_ECB, $iv); 
     return trim($this->safe_b64encode($crypttext)); 
    } 

    public function decode($value){ 

     if(!$value){return false;} 
     $crypttext = $this->safe_b64decode($value); 
     $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); 
     $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); 
     $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv); 
     return strtolower(trim($decrypttext)); 
    } 
} 
+0

嘗試從命令提示符運行PHP,這會給你任何錯誤,可能會發生在DLL加載,如缺少dll,缺少路徑,混合c + +運行庫等。 –

+0

如何做到這一點?你能建議嗎?我檢查所有的DLL,現在它存儲在我的電腦中。所以,我不知道爲什麼它仍然是錯誤的。 – user2971638

+0

確保你在你的PATH中有php,然後打開命令提示符,輸入:php,回車。看看是否有任何錯誤。 –

回答

1

在PHP-7的情況下:

sudo apt-get install mcrypt php7.1-mcrypt

49

在Ubuntu上,在PHP 5和Apache,你必須運行:

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

如果您使用的是PHP 7:

apt install php7.0-mcrypt 
+2

我不得不爲所有這些命令添加'sudo'。 – usandfriends

1

我不得不對CentOS的7安裝的mcrypt庫針對上述問題的x86_64

下面是我所做的安裝php-mcrypt & libmcrypt依賴關係。

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm 
rpm -ivh epel-release-7-5.noarch.rpm 
yum install --enablerepo="epel" php-mcrypt 

與用戶 '根' 或須藤

與此,無需添加 「擴展名= php_mcrypt.dll」 在php.ini文件

+0

找不到此連結? –

+0

現在有更高版本, [epel-release-7-6.noarch.rpm](http://dl.fedoraproject.org/pub/epel/7/x86_64/e/) – NBhat

相關問題