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にはできる状況はありますか?