Mcrypt未能在新的ubuntu设置上工作

时间:2014-01-31 00:25:06

标签: php ubuntu xampp mcrypt

我以前在xampp等windows上构建我的网站...但由于一些软件问题,我不得不改为linux,现在正在运行ubuntu 13.10。

我将xampp重新安装到ubuntu并转移并设置了我的网站,以便我继续工作,除了网站的一个部分,这一切似乎工作得很好。

$iv = mcrypt_create_iv(128, MCRYPT_DEV_URANDOM);

这段代码在windows上工作正常并为我创建随机字符串来创建cookie,但是在新的ubuntu设置中它无法正常工作,只是退出到当前页面,没有错误消息。

我将其更改为随机字符串,如下所示

$iv = "aahd98a8du98sd9a8ud9ajsd89";

代码运行正常,所以必须是mcrypt无法运行。 关于为什么会发生这种情况的任何想法?

谢谢

2 个答案:

答案 0 :(得分:1)

您可以试试并发布结果吗?

mv -i /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
sudo php5enmod mcrypt
sudo service apache2 restart

答案 1 :(得分:1)

摘自mcrypt_create_iv上关于MCRYPT_DEV_URANDOM

的文档
  

IV的来源。源可以是MCRYPT_RAND(系统随机数生成器),MCRYPT_DEV_RANDOM(从/ dev / random读取数据)和MCRYPT_DEV_URANDOM(从/ dev / urandom读取数据)。在5.3.0之前,MCRYPT_RAND是Windows上唯一支持的。

你的Windows机器上最初使用MCRYPT_DEV_URANDOM可能会被忽略,因为不支持(我不知道你不知道你在windows机器上运行的是什么版本的PHP)。如果是这样,那么它将默认为MCRYPT_RAND并且之前工作正常。

但是现在你在Ubuntu上,实际上正在考虑MCRYPT_DEV_URANDOM,这意味着PHP正在寻找从/dev/urandom读取数据。 可能您的系统没有/dev/urandom

以下是我要采取的步骤。您需要对Ubuntu计算机具有sudo或root权限。

检查您的系统是否有/dev/urandom可用。

ls -a /dev/urandom

如果没有,则创建它。

这些步骤取自Ubuntu Manpages

mknod -m 644 /dev/random c 1 8
mknod -m 644 /dev/urandom c 1 9
chown root:root /dev/random /dev/urandom

以防万一,你确实安装了mcrypt,是吗?

在安装PHP5之后,我的Ubuntu设置没有开箱即用的mcrypt支持。安装它:

sudo apt-get install php5-mcrypt
sudo service apache2 restart