fopen('/dev/urandom', 'rb') 可能由于多种原因而失败。也许“open_basedir 限制 [正在] 生效”或者 /dev/* 权限不允许 fopen() 读取它们。
事情是...... mcrypt_create_iv 使用 /dev/urandom:
https://github.com/php/php-src/blob/master/ext/mcrypt/mcrypt.c#L1391
我的问题是......如果 fopen() 失败 mcrypt_create_iv() 仍然可以工作吗?
对于 open_basedir 限制,我的假设是肯定的,但如果是权限呢?是否存在 fopen() 可能没有打开 /dev/urandom 所需权限但 mcrypt_create_iv 可以的情况?