这个PHP代码:
<?php
random_int(0,63);
?>
因此错误而失败:
致命错误:未捕获异常:无法在/usr/htdocs/rand.php:2中打开源设备
堆栈追踪:
#0 /usr/htdocs/rand.php(2): 在第2行的/usr/htdocs/rand.php中抛出random_int(0,2)
#1 {main}
由于此错误,我无法设置我的nextcloud服务器...请问有什么问题?
答案 0 :(得分:0)
来自https://secure.php.net/manual/en/function.random-int.php:
此功能使用的随机源如下:
- 在Windows上,»将始终使用CryptGenRandom()。
- 在Linux上,如果可用,将使用»getrandom(2)系统调用。
- 在其他平台上,将使用/ dev / urandom。
- 如果上述资源都不可用,则会抛出异常。
关于列表中的算法:
在您托管的情况下,如果可用则没有,因此会抛出Exception
(我以前从未见过这个,这可能意味着您的托管服务提供商不是很好)。
您可以使用的是什么,我推荐的是random_int
而不是bin2hex
,openssl_random_pseudo_bytes。它需要编译Openssl库,这是一种规范。
请注意;上述函数返回二进制结果,您可以使用hexdec
轻松转换为十六进制,或使用$int = hexdec(bin2hex(openssl_random_pseudo_bytes(1, $strong))); // 1 byte int
$int = hexdec(bin2hex(openssl_random_pseudo_bytes(2, $strong))); // 2 byte int
从十六进制转换为int。
示例:
$arr = array('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten');