调用未定义的函数 mcrypt_decrypt() - 即使安装了 php5-mcrypt

Posted

技术标签:

【中文标题】调用未定义的函数 mcrypt_decrypt() - 即使安装了 php5-mcrypt【英文标题】:Call to undefined function mcrypt_decrypt() - even when php5-mcrypt installed 【发布时间】:2014-01-19 06:57:33 【问题描述】:

所以我不能停止收到错误:

php Fatal error:  Call to undefined function mcrypt_decrypt() in 

即使我安装了 php5_mcrypt,我也重新安装了好几次 php,但我无法让它工作!

更多信息:

mandatory@mandatorys-box:~/Desktop/bots$ dpkg -l | grep php
ii  libapache2-mod-php5                       5.5.3+dfsg-1ubuntu2.1                      amd64        server-side, html-embedded scripting language (Apache 2 module)
ii  php5                                      5.5.3+dfsg-1ubuntu2.1                      all          server-side, HTML-embedded scripting language (metapackage)
ii  php5-cli                                  5.5.3+dfsg-1ubuntu2.1                      amd64        command-line interpreter for the php5 scripting language
ii  php5-common                               5.5.3+dfsg-1ubuntu2.1                      amd64        Common files for packages built from the php5 source
ii  php5-curl                                 5.5.3+dfsg-1ubuntu2.1                      amd64        CURL module for php5
ii  php5-json                                 1.3.1+dfsg-2                               amd64        JSON module for php5
ii  php5-mcrypt                               5.4.6-0ubuntu3                             amd64        MCrypt module for php5
ii  php5-mysql                                5.5.3+dfsg-1ubuntu2.1                      amd64        MySQL module for php5
ii  php5-readline                             5.5.3+dfsg-1ubuntu2.1                      amd64        Readline module for php5

不知道是什么问题,什么都试过了。

更多信息:

mandatory@mandatorys-box:~/Desktop/bots$ php -v
PHP 5.5.3-1ubuntu2.1 (cli) (built: Dec 12 2013 04:24:35) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies

【问题讨论】:

【参考方案1】:

安装是一回事。启用是另一回事。请确保您的 /etc/php.ini 文件包含以下行:

extension=mcrypt.so

如果您找不到您的 php.ini,请创建一个包含以下内容的 test.php 文件:

<?php phpinfo(); ?>

使用php test.php | grep ".ini" 执行它,您将找到您的ini 文件的路径。其中之一必须包含上面的extension= 行。

【讨论】:

【参考方案2】:

您可能必须启用该模块。在 Ubuntu 系统上,这可以通过将 php5-mcrypt 附带的 ini 文件链接到您要使用的每个 PHP 二进制文件的 conf.d 中轻松完成:

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/cli/conf.d/mcrypt.ini
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/cgi/conf.d/mcrypt.ini

【讨论】:

您应该改为调用php5enmod mcrypt(本质上是相同的)。并且不要忘记重新启动您的 apache (service apache2 restart)。

以上是关于调用未定义的函数 mcrypt_decrypt() - 即使安装了 php5-mcrypt的主要内容,如果未能解决你的问题,请参考以下文章

辅助函数未加载 laravel 5 - 调用未定义函数

php使用内置的mcrypt_encrypt和mcrypt_decrypt进行字符串加密解密

数据流 - 未调用函数 - 错误 - 未定义名称

调用未定义函数 Mpdf\\Mpdf()

Codeigniter:调用未定义的函数(模型)

如果子类未定义构造函数,是不是会调用父构造函数?