2009年10月7日 星期三

PHP:Call to undefined function: mcrypt_module_open()

windows

当运行php的服务器端缺少libmcrypt.dll时使用函数mcrypt_module_open进行解密会出现此错误。
在服务器上做如下设置可解决。

到网上下载一个php的mcrypt模块安装包,只需要libmcrypt.dll文件即可

1.将libmcrypt.dll复制到system32目录或php安装目录下的extensions目录下
2.将libmcrypt.dll复制到apache安装目录的bin目录下
3.到php安装目录下找到php.ini文件,打开它
4.找到; Directory in which the loadable extensions (modules) reside.
extension_dir = "./"
这两行,要使extension_dir指向的目录下能找到libmcrypt.dll,或系统path下有libmcrypt.dll
5.找到;Windows Extensions 项下面的;extension=php_mcrypt.dll这一行和;extension=php_iconv.dll这两行
6.去掉;extension=php_mcrypt.dll前面的分号和;extension=php_iconv.dll前面的分号
7.到apache安装目录下找到php.ini文件,打开它
8.找到; Directory in which the loadable extensions (modules) reside.
extension_dir = "./"
这两行,要使extension_dir指向的目录下能找到libmcrypt.dll,或系统path下有libmcrypt.dll

9.找到;Windows Extensions 项下面的;extension=php_mcrypt.dll这一行和;extension=php_iconv.dll这两行
10.去掉;extension=php_mcrypt.dll前面的分号和;extension=php_iconv.dll前面的分号
以上由smartdp原创。

linux

显示Call to undefined function: mcrypt_module_open()的错误
原因:缺少libmcrypt-2.5.7.tar.gz
到这里ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/下载libmcrypt-2.5.7.tar.gz,
tar -zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure --prefix=/usr/local/libmcrypt
make
make check
make install
成功后在进入php
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd/bin/apxs --with-gd=/usr/local/gd --enable-gd --enable-gd-native-ttf --with-jpeg-dir=/usr/local/jpeg6 --with-png=/usr/local/lib --with-ttf --with-zlib=/usr/local/zlib --with-freetype-dir=/usr/local/freetype --enable-magic-quotes --with-mysql=/usr/local/mysql --with-mysql-sock=/usr/local/mysql/tmp/mysql.sock --with-iconv --with-mbstring --enable-mbstring --enable-track-vars --enable-force-cgi-redirect --enable-ftp --with-config-file-path=/usr/local/httpd/conf --with-pear=/usr/local/php/pear --with-mcrypt=/usr/local/libmcrypt
配置php
make
make install
重新启动服务器

資料來源:請點這

沒有留言:

張貼留言