【问题标题】:PHP 5.3.18 Mcrypt error: Cannot open source devicePHP 5.3.18 Mcrypt 错误:无法开源设备
【发布时间】:2023-04-06 23:19:01
【问题描述】:

我的虚拟主机上的 Mcrypt 库出现错误。我正在使用 Laravel 4 框架(目前处于测试阶段)。它给出了以下错误:

ErrorException: Warning: mcrypt_create_iv() [function.mcrypt-create-iv]: Cannot open source device in foo/bar line #

一些主机规格:

  • 共享主机
  • PHP 5.3.18
  • Linux
  • Mcrypt 2.5.8

正在发生的事情是框架中的某个地方 mcrypt_create_iv() 被调用。它通过了 MCRYPT_DEV_URANDOM 全局,它应该在 Linux 和 PHP >= 5.3.0

上工作

但由于某种原因,它仍然给出了这个 ErrorException。如果我对函数进行硬编码以使用 MCRYPT_RAND 代替它可以工作,但我觉得奇怪的是为什么它会在另一个全局上给出错误,而这应该在这些规范上工作。

我能想到的只是某些文件夹混淆了,或者 /dev/urandom 有问题。我不熟悉这些类型的加密,所以我希望任何人都可以给我一些关于如何修复它的建议。

http://en.wikipedia.org/wiki//dev/random

更新

有人建议我的网站无权访问加密文件夹。这可能是问题所在。我正在联系我的虚拟主机。

【问题讨论】:

    标签: php linux encryption laravel mcrypt


    【解决方案1】:

    我的第一个猜测是您的网站无法从网站的文档根目录中访问该文件夹。如果这是在共享主机上,他们可能会阻止它。我建议打电话给他们了解一下。

    因为 /dev/random 是机器根目录上的文件,所以大多数共享主机提供商不允许访问此级别的文件夹。

    【讨论】:

    • 谢谢!我会联系他们。
    • 为什么不自己尝试一下 - print_r(stat('/dev/urandom'));
    • @bretterer:谢谢!它确实被阻止了。他们已经更新了 apache 设置,现在一切正常。
    • @symcbean 感谢您的提示! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 2017-04-18
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多