我以前在xampp等windows上构建我的网站...但由于一些软件问题,我不得不改为linux,现在正在运行ubuntu 13.10。
我将xampp重新安装到ubuntu并转移并设置了我的网站,以便我继续工作,除了网站的一个部分,这一切似乎工作得很好。
$iv = mcrypt_create_iv(128, MCRYPT_DEV_URANDOM);
这段代码在windows上工作正常并为我创建随机字符串来创建cookie,但是在新的ubuntu设置中它无法正常工作,只是退出到当前页面,没有错误消息。
我将其更改为随机字符串,如下所示
$iv = "aahd98a8du98sd9a8ud9ajsd89";
代码运行正常,所以必须是mcrypt无法运行。 关于为什么会发生这种情况的任何想法?
谢谢
答案 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
在安装PHP5之后,我的Ubuntu设置没有开箱即用的mcrypt支持。安装它:
sudo apt-get install php5-mcrypt
sudo service apache2 restart