0

X の数値/文字をランダムに生成するスクリプトを見つけました。ローカルホストでは問題なく動作しますが、スクリプトを VPS にアップロードすると動作しません。

次のエラーが表示されます。

Fatal error:  Call to undefined function  openssl_random_pseudo_bytes()

それはコードのこの部分です:

function crypto_rand_secure($min, $max) {
        $range = $max - $min;
        if ($range < 0) return $min; // not so random...
        $log = log($range, 2);
        $bytes = (int) ($log / 8) + 1; // length in bytes
        $bits = (int) $log + 1; // length in bits
        $filter = (int) (1 << $bits) - 1; // set all lower bits to 1
        do {
            $rnd = hexdec(bin2hex(openssl_random_pseudo_bytes($bytes)));
            $rnd = $rnd & $filter; // discard irrelevant bits
        } while ($rnd >= $range);
        return $min + $rnd;
}

同じ問題を含むスタックオーバーフローの投稿を見つけました。ただし、モジュールをインストールする必要がありました。これを行う方法はわかりませんが、VPS の WHM でこれを見つけました。

ホーム »ソフトウェア »モジュールインストーラー

Perl モジュールを選択してopensslを検索すると、多くの結果が得られます。これらのいずれかをインストールしましたが、デフォルトで 1 つインストールしました。

インストールされているopensslモジュールは次のとおりです。

クリプト::OpenSSL::RSA

暗号::OpenSSL::ランダム

それでも...自分のウェブサイトで同じエラーが発生します。解決策はありますか?前もって感謝します。

4

3 に答える 3

2

http://php.net/manual/en/openssl.installation.php--with-opensslに記載されているように、php をコンパイルする必要もあります。

于 2013-01-27T15:03:07.560 に答える
2

あなたが見つけた OpenSSL Perl モジュールはニシンです。PHP には何の影響もありません。(PHP と Perl は、2 つのまったく別のプログラミング言語です。)

インストールする必要があるのは、openssl PHP モジュールです。cPanel に PHP を再構築するオプションがあるかどうかは正確には思い出せませんが、もしそうなら、そのプロセスを経て OpenSSL を有効にする必要があります。

于 2013-01-27T17:28:08.063 に答える
1

私自身も同じ問題を抱えていました。php.iniファイルを編集して解決しました- に変更;extension=php_openssl.dllextension=php_openssl.dllます。

(私のインストールでは、私のphp.iniファイルは私のP:\Program Files\EasyPHP-12.1\conf_files\ディレクトリにありました。)

于 2014-09-05T14:19:54.530 に答える