Error fatal: Llamada a la función undefined imap open () en PHP
Estoy intentando acceder a mi cuenta de gmail a través de mi localhost. Sin embargo, estoy recibiendo la respuesta:
Error fatal: Llamar a la función undefined imap_open ()
¿Puede alguien señalar 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());
10 answers
Bastante simple, la extensión IMAP no está activada en su instalación de PHP. No está activado por defecto. Si su instalación local está ejecutando XAMPP en Windows, debe habilitarla como se describe en XAMPP FAQ :
¿Dónde está el soporte IMAP para PHP?
Por defecto, el soporte IMAP para PHP está desactivado en XAMPP, porque hubo algunos errores misteriosos de inicialización con algunos versiones como Windows 98. Quién trabaja con NT sistemas, puede abrir el archivo
"\xampp\php\php.ini"
para activar la extensión de php eliminando comenzando punto y coma en la línea";extension=php_imap.dll"
. Debería ser:extension=php_imap.dll
Ahora reiniciar Apache e IMAP debería funcionar. Puedes usar los mismos pasos para cada extensión, que no está habilitada en el valor predeterminado configuración.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-15 10:22:48
El Procedimiento de instalación es siempre el mismo, pero el gestor de paquetes y el nombre del paquete varían, dependiendo de la distribución, versión y/o repositorio que se utilice. En general, los pasos son:
A ) al principio, se requiere una escalada de privilegios de usuario, ya sea obtenida con los comandos
su
osudo
.B ) entonces se puede instalar el módulo PHP ausente con un gestor de paquetes.
C) después de eso, reiniciar el demonio HTTP
apache2
es necesario para cargar el módulo.D ) por fin, se puede ejecutar
php -m | grep imap
para ver si el módulo PHP está ahora disponible.
En Ubuntu el paquete APT
php5-imap
(o php-imap
) puede bei instalado 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
(pista: el nombre del paquete podría ser algo similar php56w-imap
o php71w-imap
, cuando se usa Webtatic repo):
yum install php-imap
service httpd restart
En sistemas systemd
, mientras se usa systemd units , el comando para reiniciar unit httpd.service
es:
systemctl restart httpd.service
La solución indicada 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 predeterminado php.ini
(al menos en Ubuntu 12.04) y un El módulo PHP debe ser referenciado como máximo una vez. Se sugiere usar INI
fragmentos de código para cargar módulos, mientras el directorio /etc/php5/conf.d/
(esa ruta también puede variar) está siendo escaneado para INI
archivos:
/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 IMAP de PHP deberían estar disponibles; la mejor práctica puede ser: compruebe si un módulo está cargado, antes de intentar utilizarlo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-02 19:06:02
En Ubuntu para instalar imap use
Sudo apt-get install php-imap
Ubuntu 14.04 y superior use
Sudo apt-get install php5-imap
E imap por defecto no habilitado por php así que use este comando para habilitar la extensión imap
Sudo php5enmod imap
Luego reinicie su apache
Sudo service apache2 restart
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-30 10:08:21
Si está en linux, edite el /etc/php/php.ini
(o tendrá que crear un nuevo archivo de importación de extensión en /etc/php5/cli/conf.d) archivo para agregar el archivo de objeto compartido imap y, a continuación, reiniciar el servidor apache. Uncomment
;extension=imap.so
De modo que se vuelve así:
extension=imap.so
Luego, reinicie el apache por
# /etc/rc.d/httpd restart
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-18 13:45:25
Con
echo get_cfg_var('cfg_file_path');
Puede averiguar qué php.ini ha sido utilizado por esta instancia de php.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-28 07:14:28
Durante la migración de Ubuntu 12.04 a 14.04 tropecé con esto también y quería compartir que a partir de Ubuntu 14.04 LTS la extensión IMAP ya no parece cargarse por defecto.
Compruebe 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álelo.
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-03 18:26:07
En Mac OS X con Homebrew, como obviamente, PHP ya está instalado debido a un error proporcionado que no podemos ejecutar:
Actualización: Tha última versión
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, instalando solo el módulo, aquí no funcionará:
$ brew install php72-imap
Error: No available formula with the name "php72-imap"
Entonces, debemos reinstalarlo :
$ brew reinstall php72 --with-imap
Tomará un tiempo: -) (construido en 8 minutos 17 segundos)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-25 18:16:02
Si es centos con php 5.3 instalado.
Sudo yum install php53-imap
Y reiniciar apache
Sudo/sbin / service httpd restart o sudo service apache2 restart
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-13 01:26:54
Ubuntu con Nginx y PHP-FPM 7 usa esto:
Sudo apt-get install php-imap
Service php7. 0-fpm restart servicio 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 y 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-29 09:50:03
Si su instalación local está ejecutando XAMPP en Windows, eso es suficiente : 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". Debe ser:
;extension=php_imap.dll
A
extension=php_imap.dll
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-12 07:31:41