2012-04-23 45 views
0

以下代码不会在Windows上的WAMP中生成输出。不生成WAMP散列

在MAMP上正常工作。

猜测这是一个缺失的模块或东西。

$reportHash = str_replace(
     array('+','/','='), 
     array('-','_',''), 
     base64_encode(file_get_contents('/dev/urandom', null, null, -1, 16))); 

回答

2

Windows上没有/dev/urandom

的便携式随机字符串发生器或mt_rand()用于便携式随机数发生器使用uniqid()

+0

击败我吧!这是一个与mt_rand()相关的SO问题:http://stackoverflow.com/questions/9446892/php-using-mcrypt-create-iv – 2012-04-23 17:04:11

+0

即使在WAMP中? – David 2012-04-23 17:04:28

+0

@David,WAMP是一个软件集合,可以很容易地在Windows上运行PHP,Apache和MySQL。它们将在Windows上运行,而不是在UNIX上运行。 '/ dev/urandom'是一个存在于UNIX文件系统上的文件(['file_get_contents()'](http://php.net/file_get_contents)实际上打开了文件并从中读取文件),但是Windows上没有这样的文件,所以读取会失败。使用该文件将限制代码到UNIX系统(例如Linux和Mac OS X)的可移植性。 – rid 2012-04-23 17:05:53