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;
}

我在 stacksoverflow 上找到了同样问题的帖子。但是,它需要安装一个模块。我不知道该怎么做,但我在 VPS 的 WHM 上找到了这个。

Home »软件 »模块安装程序

当我选择 Perl Module 并搜索openssl时,我得到了很多结果。我已经安装了其中一个,并且我默认安装了一个。

这里是安装的 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 是两种完全独立的编程语言。)

您需要安装的是 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 回答