Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
致命错误:在PHP中调用未定义的函数imap_open()_Php_Imap - Fatal编程技术网

致命错误:在PHP中调用未定义的函数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

我正试图通过本地主机访问我的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 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
):

CentOSFedora上,可以使用
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