Error grave: llamada a la función no definida imap_open () en PHP

Estoy tratando de acceder a mi cuenta de gmail a través de mi localhost. Sin embargo, estoy recibiendo la respuesta:

Error grave: llamada a una función no definida imap_open ()

¿Alguien puede indicar qué debo hacer para resolver el problema?

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX'; $username = '[email protected]'; $password = 'mypassword'; /* try to connect */ $inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' .imap_last_error()); 

Bastante simple, la extensión IMAP no está activada en su instalación de PHP. No está habilitado por defecto . Si su instalación local está ejecutando XAMPP en Windows, debe habilitarlo como se describe en las Preguntas frecuentes de XAMPP :

¿Dónde está el soporte IMAP para PHP?

De forma predeterminada, el soporte de IMAP para PHP está desactivado en XAMPP, porque hubo algunos errores de inicialización misteriosos con algunas versiones domésticas como Windows 98. Quien trabaja con sistemas NT, puede abrir el archivo "\xampp\php\php.ini" para activar la extensión php eliminando el punto y coma inicial en la línea ";extension=php_imap.dll" . Debería ser: extension=php_imap.dll

Ahora reinicie Apache y IMAP debería funcionar. Puede usar los mismos pasos para cada extensión, que no está habilitada en la configuración predeterminada.

El Procedimiento de instalación es siempre el mismo, pero el administrador de paquetes y el nombre del paquete varían, dependiendo de la distribución, la versión y / o el repository que use. En general, los pasos son:

a ) al principio, se requiere la escalada de privilegios del usuario, ya sea obtenida con los comandos su o sudo .

b ) entonces uno puede instalar el módulo PHP ausente con un administrador de paquetes.

c ) después de eso, es necesario reiniciar el daemon apache2 HTTP para cargar el módulo.

d ) por fin, se puede ejecutar php -m | grep imap php -m | grep imap para ver si el módulo PHP ya está disponible.

En Ubuntu, el paquete APT php5-imap (o php-imap ) se puede instalar con apt-get :

 apt-get install php5-imap service apache2 restart 

En Debian , el paquete APT php5-imap se puede instalar aptitude (o apt-get ):

 aptitude install php5-imap apache2ctl graceful 

En CentOS y Fedora, el paquete RPM php-imap se puede instalar con yum (sugerencia: el nombre del paquete podría ser algo parecido a php56w-imap o php71w-imap , cuando se usa el repository Webtatic ):

 yum install php-imap service httpd restart 

En sistemas systemd , mientras usa unidades systemd , el comando para reiniciar la unidad httpd.service es:

 systemctl restart httpd.service 

La solución mencionada anteriormente tiene el problema, que cuando el módulo ya estaba referenciado en:

 /etc/php5/apache2/php.ini 

Podría lanzar un:

 PHP Warning: Module 'imap' already loaded in Unknown on line 0 

Eso sucede, porque se hace referencia en el archivo php.ini predeterminado (al menos en Ubuntu 12.04) y se debe hacer referencia a un módulo PHP como máximo una vez . Se sugiere el uso de fragmentos INI para cargar módulos, mientras que el directorio /etc/php5/conf.d/ (esa ruta también puede variar) se está analizando en busca de archivos INI :

 /etc/php5/conf.d/imap.ini 

Ubuntu también cuenta con comandos propietarios para administrar módulos PHP, que se ejecutarán antes de reiniciar el servidor web:

 php5enmod imap php5dismod imap 

Una vez que el módulo IMAP se carga en el servidor, las funciones PHP IMAP deberían estar disponibles; la mejor práctica puede ser, para verificar si un módulo está incluso cargado , antes de intentar utilizarlo.

en Ubuntu para instalar imap use

sudo apt-get install php-imap

Ubuntu 14.04 y uso superior

sudo apt-get install php5-imap

e imap por defecto no está habilitado por php, así que use este comando para habilitar la extensión de imap

sudo php5enmod imap

entonces reinicie su apache

sudo servicio apache2 reinicio

Si está en Linux, edite el archivo /etc/php/php.ini (o tendrá que crear un nuevo archivo de importación de extensión en /etc/php5/cli/conf.d) para agregar el archivo de objeto compartido imap y luego, reinicie el servidor apache. Descomentar

 ;extension=imap.so 

para que se convierta así:

 extension=imap.so 

Entonces, reinicie el apache por

 # /etc/rc.d/httpd restart 

Con

 echo get_cfg_var('cfg_file_path'); 

puede averiguar qué php.ini ha sido utilizado por esta instancia de php.

Durante la migración de Ubuntu 12.04 a 14.04, también me tropecé con esto y quería compartirlo desde Ubuntu 14.04 LTS, la extensión IMAP parece que ya no se carga por defecto.

Compruebe para verificar si la extensión está instalada:

 dpkg -l | grep php5-imap 

Debería dar una respuesta como esta:

 ii php5-imap 5.4.6-0ubuntu5 amd64 IMAP module for php5 

Si no, instálalo.

Para habilitar realmente la extensión

 cd /etc/php5/apache2/conf.d ln -s ../../mods-available/imap.ini 20-imap.ini service apache2 restart 

Debería arreglarlo para apache. Para CLI haga lo mismo en /etc/php5/cli/conf.d

En Mac OS X con Homebrew, como es obvio, PHP ya está instalado debido al error proporcionado que no podemos ejecutar:

Actualización: la última versión de brew instal php --with-imap no funcionará más !!!

 $ brew install php72 --with-imap Warning: homebrew/php/php72 7.2.xxx is already installed 

Además, solo instalando el módulo, aquí no funcionará:

 $ brew install php72-imap Error: No available formula with the name "php72-imap" 

Por lo tanto, debemos reinstalarlo :

 $ brew reinstall php72 --with-imap 

Tomará un tiempo 🙂 (construido en 8 minutos y 17 segundos)

Si es centos con php 5.3 instalado.

sudo yum instalar php53-imap

y reiniciar apache

sudo / sbin / service httpd restart o sudo service apache2 restart

Ubuntu con Nginx y PHP-FPM 7 usa esto:

sudo apt-get install php-imap

service php7.0-fpm restart service ngnix restart

compruebe que el módulo ha sido instalado php -m | grep imap

La configuración para el módulo imap se habilitará automáticamente, tanto en cli php.ini como en 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

Si su instalación local está ejecutando XAMPP en Windows, es suficiente: puede abrir el archivo “\ xampp \ php \ php.php.ini” para activar la suspensión de php eliminando el punto y coma inicial en la línea “; extension = php_imap.dll”. Debería ser:

 ;extension=php_imap.dll 

a

 extension=php_imap.dll 

Para instalar IMAP en PHP 7.0.32 en Ubuntu 16.04. Vaya al enlace dado y en función de su área, seleccione el enlace. En mi caso, selecciono un enlace de la sección de Asia. Luego se descargará un archivo. simplemente haga clic en el archivo para instalar IMAP. Luego reinicie Apache

https://packages.ubuntu.com/xenial/all/php-imap/download .

para verificar si IMAP está instalado, verifique el archivo phpinfo. en caso de que la instalación sea exitosa, se mostrará IMAP c-Client Versión 2007f.