`mcrypt_create_iv` 停止,但只能通过 Apache

`mcrypt_create_iv` Stalls, But Only Through Apache

我的 PHP 本地安装最近开始执行此操作,但我不知道发生了什么变化并且可能启动了此操作。当我调用 mycrypt_create_iv 时,它以 100% CPU 的利用率完全停止,但当它被 Apache 调用时,。当我从 CLI 调用它时,它几乎立即 returns。我的测试文件如下:

<?php echo mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);

当然,当我发现这个问题时,这些值就是函数被调用的内容。 PHP 5.5 或 5.6 都会出现此问题,因此我认为这不是特定的 PHP 版本。

我是 运行 Gentoo Linux,所以根本原因可能是构建问题,但我已经重建了 libmcrypt、PHP 和 Apache,但没有任何效果.

经过一些实验,我明白了。

我没有在 make.conf 中设置 APACHE2_MPMS,所以它默认为 worker MPM。我将它设置为使用 prefork 并且这个问题被清除了。

我确实设置了 threads USE 标志,它与 prefork 和 PHP 冲突,所以我删除了那个 use 标志。根据我的个人资料,这意味着大多数带有该标志的软件包仍然设置了它,但 phpmod_php 被禁用。

似乎是 php 的错误 (https://bugs.php.net/bug.php?id=69833),已在 5.6.13

中修复