我找到了一个脚本,可以随机生成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上找到了这个。
主页»软件»模块安装程序
当我选择Perl模块并搜索 openssl 时,我会得到很多结果。 我安装了其中一个,默认安装了一个。
以下是安装的openssl模块:
隐窝:: OpenSSL的:: RSA
隐窝:: OpenSSL的::随机
仍然......我的网站上出现了同样的错误。 有解决方案吗提前谢谢。
答案 0 :(得分:2)
您还需要使用http://php.net/manual/en/openssl.installation.php中所述的--with-openssl
编译php。
答案 1 :(得分:2)
您找到的OpenSSL Perl模块是一个红色的鲱鱼。它们对PHP没有任何影响。 (PHP和Perl是两种完全独立的编程语言。)
您需要安装的是openssl PHP模块。我不记得cPanel是否有重建PHP的选项,但如果我是对的,那么你需要经历这个过程并在那里启用OpenSSL。
答案 2 :(得分:1)
我自己也有同样的问题。我通过编辑 php.ini 文件解决了这个问题 - 将;extension=php_openssl.dll
更改为extension=php_openssl.dll
。
(对于我的安装,我的 php.ini 文件位于我的P:\Program Files\EasyPHP-12.1\conf_files\
目录中。)