已安装 PHP IMAP 但出现“未定义的函数 imap_open()”错误

Posted

技术标签:

【中文标题】已安装 PHP IMAP 但出现“未定义的函数 imap_open()”错误【英文标题】:PHP IMAP Installed but getting "Undefined function imap_open()" Error 【发布时间】:2019-11-03 15:19:58 【问题描述】:

我正在尝试在弹性 beanstalk 环境中安装/启用 IMAP。 我安装了 IMAP 模块,如下面的命令所示(当通过 SSH 连接到 ec2 实例时)。

$ php -m | grep imap
PHP Warning:  Module 'imap' already loaded in Unknown on line 0 imap

不确定警告是否与我看到的错误有关,但无论如何,IMAP 正在加载。

但是,当我在我的 PHP 代码中调用 imap_open() 时,我得到了这个错误:

PHP 致命错误:未捕获错误:调用未定义函数 imap_open()

我查看了this answer,但它已经有将近 10 年的历史了,并且查看其他问题(here 和 here)这并不像在 Linux 上向 php.ini 文件中添加一行那么简单。

【问题讨论】:

php -m 不会告诉您是否编辑了正确的 php.ini(是的,不止一个 / 并且通常情况下:某些 SAPI 显然需要重新启动服务器)。 安装后是否重启了服务器 httpd 或 apache2 服务?首先重新启动服务器并检查。 我不确定您是否可以从 amazon-ec2 实例发送电子邮件...可能您必须使用他们的(“Amazon SES”)邮件服务提供商或类似服务提供商。 @YanDatsiuk 这是用于检索电子邮件。 嗨@Kevin Rock。对不起 - 你是对的。您能否尝试从脚本中输出启用的模块。您可以尝试,例如: die(phpinfo());只是为了确保您正在查看来自 web 服务器使用的 php 的信息......因为当您运行“php -m”时 - 它是 CLI 中启用的模块的列表。然后你现在是否启用 imap。 【参考方案1】:

根据@Priyanka Sankhala 的评论,我重新启动了 httpd 服务,并且成功了。我以为我之前尝试过,但显然我只是以非root用户身份尝试过,所以我无法成功重启服务。 sudo 和重新启动服务允许 IMAP 工作。

【讨论】:

以上是关于已安装 PHP IMAP 但出现“未定义的函数 imap_open()”错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 php.ini 中启用 imap

LogicException:请确保已安装并启用 PHP Redis 扩展

如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装 PHP IMAP 扩展?

为啥 PHP 函数 imap_search() 很慢?

php相关扩展安装及报错总结

在 php 网站上集成 IMAP