我已经要求系统管理员在服务器上安装mcrypt,他们说一切正常.但是当我运行我的简单脚本时,我得到了这个.
警告:mcrypt_get_iv_size()[function.mcrypt-get-iv-size]:模块初始化失败
它来自这条线:
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB);
Run Code Online (Sandbox Code Playgroud)
现在,从这段代码:
$algorithms = mcrypt_list_algorithms("/usr/local/bin/mcrypt");
foreach ($algorithms as $cipher) {
echo "$cipher<br />\n";
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
警告:mcrypt_list_algorithms()[function.mcrypt-list-algorithms]:在模块目录中找不到算法
当我运行这个:
$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");
foreach ($modes as $mode) {
echo "$mode <br />\n";
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
警告:mcrypt_list_modes()[function.mcrypt-list-modes]:在模块目录中找不到模式
但是,运行此命令时此命令
which mcrypt; mcrypt -v
Run Code Online (Sandbox Code Playgroud)
生产:
/usr/local/bin/mcrypt
Mcrypt v.0.9.9 (x86_64-unknown-linux-gnu)
Linked against libmcrypt v.2.5.7
Copyright (C) 1998-2002 Nikos Mavroyanopoulos (nmav@gnutls.org)
Run Code Online (Sandbox Code Playgroud)
是否已正确安装/配置mcrypt?
更新:
我这样做了:
whereis libmcrypt
Run Code Online (Sandbox Code Playgroud)
......得到了结果:
libmcrypt: /usr/local/lib/libmcrypt /usr/local/lib/libmcrypt.so /usr/local/lib/libmcrypt.la
Run Code Online (Sandbox Code Playgroud)
我也改变了:
$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");
Run Code Online (Sandbox Code Playgroud)
至...
$modes = mcrypt_list_modes("/usr/local/lib/libmcrypt");
$algorithms …
Run Code Online (Sandbox Code Playgroud)