2016-11-25 344 views
1

我建立一個網頁的登錄功能,我想出了這個錯誤:致命錯誤:openssl_random_pseudo_bytes

Fatal error: Call to undefined function openssl_random_pseudo_bytes() in ...Users_model.php

這是源代碼,順其自然(2號線)的一個片段:

if(password_verify($password, $row->password)) { 
     $token = bin2hex(openssl_random_pseudo_bytes(21)); 
     $this->insert_token_user($row->id, $token); 
     $res = [ 
      'id' => $row->id, 
      'first_name' => $row->first_name, 
      'last_name' => $row->last_name, 
      'email' => $row->email, 
      'token' => $token 
     ]; 

而這正是它發生在調試代碼(第3行):

jQuery.ajax({ 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader("Authorization", "Basic " + btoa(email + ":" + password)); 
    }, 
    url: URL + 'user/login', 
    contentType: 'application/json', 
    type: 'GET', 
    success: function(data, status, response) { 
    }, 
    error: function(xhr, status, error) { 
     var err = JSON.parse(xhr.responseText); 
     responseHandling(err); 
    } 

從調試器的錯誤的屏幕截圖: error 1 ...

error 2

我運行Windows 10的x64和MAMP 3.2.2爲localhost。 MAMP設置:php 5.6.24,緩存關閉。

這是我做過什麼來嘗試解決問題:

  • 去除分號延長= php_openssl.dll 在此文件夾C:\ MAMP \的conf \ php5.6.24 \ PHP的.ini
  • 這裏C:\ MAMP \的conf \ php5.6.0 \ php.ini中
  • 移動兩個php.ini中C:\ MAMP \ BIN \ PHP \ php5.6.0C:\ MAMP \ BIN \ PHP \ php5.6.24文件夾

之所以在這兩個地方這樣做,是因爲Chrome擴展 「Wappalyzer」 顯示了這個頁面,因爲PHP 5.6.0版本。

錯誤,當我重新啓動我的電腦用分號我得到去除

error I get when I restart my PC with semicolons removed

回答

0

修復!切換到PHP 7.0.9並沒有這樣的問題。