致命错误:在PHP中调用未定义的函数imap_open()
我正试图通过本地主机访问我的gmail帐户。然而,我得到的答复是: 致命错误:调用未定义的函数imap_open() 这是我的代码:致命错误:在PHP中调用未定义的函数imap_open(),php,imap,Php,Imap,我正试图通过本地主机访问我的gmail帐户。然而,我得到的答复是: 致命错误:调用未定义的函数imap_open() 这是我的代码: $hostname = '{imap.gmail.com:993/imap/ssl}INBOX'; $username = 'myid@gmail.com'; $password = 'mypassword'; /* try to connect */ $inbox = imap_open($hostname,$username,$password) or di
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'myid@gmail.com';
$password = 'mypassword';
/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' .imap_last_error());
很简单,在PHP安装中不会激活IMAP扩展。事实并非如此。如果您的本地安装在Windows上运行XAMPP,则必须按照以下说明启用它: 对PHP的IMAP支持在哪里 默认情况下,XAMPP中禁用了对PHP的IMAP支持,因为 有些主页出现了一些神秘的初始化错误 像Windows98这样的版本。使用NT系统的用户可以打开该文件
“\xampp\php\php.ini”
通过删除
在“extension=php\u imap.dll”
行以分号开头。应该是:
extension=php\u imap.dll
现在重新启动Apache,IMAP应该可以工作了。您可以使用相同的步骤
对于默认情况下未启用的每个扩展
配置
如果您在linux上,请编辑
/etc/php/php.ini
(或者必须在/etc/php5/cli/conf.d处创建一个新的扩展导入文件),以便添加imap共享对象文件,然后重新启动apache服务器。取消注释
;extension=imap.so
所以它变成这样:
extension=imap.so
ii php5-imap 5.4.6-0ubuntu5 amd64 IMAP module for php5
然后,通过以下方式重新启动apache
# /etc/rc.d/httpd restart
安装过程始终相同,但包管理器和包名称有所不同,具体取决于所使用的发行版、版本和/或存储库。一般来说,步骤如下: a)首先,需要用户权限提升,可以通过命令
su
或sudo
获得
b)然后可以使用包管理器安装缺少的PHP模块
c)之后,需要重新启动apache2
HTTP守护进程才能加载模块
d)最后,可以运行php-m | grep imap
来查看php模块现在是否可用
在Ubuntu上,可以安装APT
包php5-imap
(或php-imap
)和APT-get
:
apt-get install php5-imap
service apache2 restart
aptitude install php5-imap
apache2ctl graceful
在Debian上,可以安装APT
软件包php5 imap
(或APT get
):
在CentOS和Fedora上,可以使用yum
安装RPM
软件包php imap
(提示:使用repo时,软件包的名称可能类似于php56w imap
或php71w imap
):
在systemd
系统上,使用时,重新启动装置httpd.service
的命令为:
systemctl restart httpd.service
上述解决方案存在一个问题,即当模块已在中引用时:
/etc/php5/apache2/php.ini
它可能会抛出一个:
PHP Warning: Module 'imap' already loaded in Unknown on line 0
这种情况会发生,因为它在默认的php.ini
文件中被引用(至少在Ubuntu 12.04上),php模块最多只能被引用一次。建议使用INI
代码段加载模块,同时扫描目录/etc/php5/conf.d/
(该路径也可能不同)中的INI
文件:
/etc/php5/conf.d/imap.ini
Ubuntu还具有管理PHP模块的专有命令,这些命令将在重新启动web服务器之前执行:
php5enmod imap
php5dismod imap
一旦
IMAP
模块加载到服务器中,就应该可以使用;最佳做法可能是,在尝试使用某个模块之前检查该模块是否已加载。如果它是安装了PHP5.3的centos
sudo yum install php53-imap
然后重新启动apache
sudo /sbin/service httpd restart
或
与
您可以找到这个php实例使用了哪个php.ini。在Ubuntu中安装imap use
sudo apt-get install php-imap
sudo apt-get install php5-imap
sudo service apache2 restart
Ubuntu 14.04及以上版本使用
sudo apt-get install php-imap
sudo apt-get install php5-imap
sudo service apache2 restart
和imap默认情况下不由PHP启用,因此使用此命令启用imap扩展
sudo php5enmod imap
然后重新启动Apache
sudo apt-get install php-imap
sudo apt-get install php5-imap
sudo service apache2 restart
在从Ubuntu12.04迁移到14.04的过程中,我也无意中发现了这一点,并想与大家分享,从Ubuntu14.04 LTS开始,IMAP扩展似乎不再按照默认值加载 检查以验证扩展是否已安装:
dpkg -l | grep php5-imap
我应该这样回答:
extension=imap.so
ii php5-imap 5.4.6-0ubuntu5 amd64 IMAP module for php5
如果没有,请安装它
要实际启用扩展
cd /etc/php5/apache2/conf.d
ln -s ../../mods-available/imap.ini 20-imap.ini
service apache2 restart
应该为apache修复它。对于CLI,请在使用自制的Mac OS X上的/etc/php5/CLI/conf.d中执行相同的操作,很明显,由于提供的错误,PHP已经安装,我们无法运行: 更新:最新版本的
brew instal php——使用imap
将不再有效强>
此外,仅安装模块,此处不起作用:
$ brew install php72-imap
Error: No available formula with the name "php72-imap"
因此,我们必须重新安装它:
$ brew reinstall php72 --with-imap
需要一段时间:-)(8分17秒完成)
使用Nginx和PHP-FPM 7的Ubuntu使用以下方法: sudo apt get安装php imap 服务php7.0-fpm重新启动 服务ngnix重启 检查模块是否已安装 php-m| grep imap 模块imap的配置将在cli php.ini和fpm php.ini上自动启用 nano/etc/php/7.0/cli/conf.d/20-imap.ini
nano/etc/php/7.0/fpm/conf.d/20 imap.ini如果您的本地安装在Windows上运行XAMPP,这就足够了: 您可以打开文件“\xampp\php\php.ini”,通过删除“extension=php_imap.dll”行中的开始分号来激活php表达式。应该是:
;extension=php_imap.dll
到
在Ubuntu 16.04上的PHP7.0.32上安装IMAP。转到给定链接并根据您所在的区域选择链接。在我的例子中,我从亚洲部分选择了一个链接。然后将下载一个文件。只需单击该文件即可安装IMAP,然后重新启动apache 要检查是否安装了IMAP,请检查phpinfo file.incase(安装成功) 将显示IMAP c-Client版本2007f。用于Xampp 7.3.9
PHP.ini
第913行:
;extension=imap
你应该去掉t