我尝试在 ubuntu 10.04 LTS 上安装一个 Web 应用,该应用需要 mcrypt,但生成了此错误:致命错误:调用未定义的函数 mcrypt_module_open()。我知道这是与此相同的问题:已安装 php-mcrypt,但它没有显示在 phpinfo() 中,但我尝试了几种方法,但都不起作用,并且还有其他问题。我本来想对原始帖子发表评论,但没有足够的声誉来这样做;请原谅我重复提问。
我的 php 和 mcrypt 版本是(均通过 apt-get 安装):
php: 5.3.2-1ubuntu4.10
mcrypt: 5.3.2-0ubuntu
执行php -m
显示mcrypt
模块已安装。我通过安装mcrypt
了。php5-mcrypt
apt-get
另外,我正在使用nginx
作为我的网络服务器。我尝试重新安装 mcrypt 并重新启动 nginx,但仍然无法让 mcrypt 显示在 phpinfo() 上,并且对 mcrypt 的调用仍然中断。
以下是更多信息:
$ php -i | grep "mcrypt"
/etc/php5/cli/conf.d/mcrypt.ini,
mcrypt
mcrypt support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value
我还检查了 mcrypt 是否在/etc/php5/cli/conf.d/mcrypt.ini
和中开启/etc/php5/cgi/conf.d/mcrypt.ini
。
最后,我正在使用带有 nginx 的 fastCGI。我在 google 上搜索了一下,看到了重新启动 php5-fpm 的建议。我在 apt-get 中找不到 php5-fpm,我不确定我是否还需要 php5-fpm,因为我已经有了 fastCGI。
我还遗漏了什么吗?
答案1
PHP-FPM 是 fastcgi 进程管理器(或类似的东西);它是 nginx 重启时保持 PHP 进程活动的常用方法。
从命令行,ps aux
将显示正在运行的内容;如果这是私人/测试服务器,则sudo kill <process id>
在名称中包含 PHP 的任何东西上,直到所有旧进程都死亡(或如上所述,重新启动整个框);如果它是一个公共/实时服务器,你可能不想这么鲁莽......
另外, ——如果存在/etc/php5/cli/conf.d/mcrypt.ini
怎么办?/etc/php/cgi/...