已安装 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()”错误的主要内容,如果未能解决你的问题,请参考以下文章
LogicException:请确保已安装并启用 PHP Redis 扩展
如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装 PHP IMAP 扩展?