texto - Error fatal: llamada a la función no definida imap_open() en PHP
string strip_tags (10)
Estoy intentando acceder a mi cuenta de gmail a través de mi servidor local. Sin embargo, estoy recibiendo la respuesta:
Error fatal: llamada a la función indefinida 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());
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 me tropecé con esto también y quería compartir que a partir de Ubuntu 14.04 LTS la extensión IMAP parece que ya no se carga por defecto.
Verifique 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
El Procedimiento de instalación es siempre el mismo, pero el administrador del paquete y el nombre del paquete varían, dependiendo de la distribución, versión y / o repositorio que se use. En general, los pasos son:
a ) al principio, se requiere una escalada de privilegios del usuario, ya sea obtenida con los comandos
su
osudo
.b ) luego uno puede instalar el módulo PHP ausente con un administrador de paquetes.
c ) después de eso, se requiere reiniciar el daemon HTTP
apache2
para cargar el módulo.d ) por fin, uno 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
) puede instalarse 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 utiliza el repositorio Webtatic ):
yum install php-imap
service httpd restart
En los sistemas systemd
, al usar unidades systemd , el comando para reiniciar la unidad httpd.service
es:
systemctl restart httpd.service
La solución indicada anteriormente tiene el problema de que cuando el módulo ya estaba referenciado en:
/etc/php5/apache2/php.ini
Podría arrojar 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 módulo PHP debe, como máximo, hacer referencia una vez . Se sugiere el uso de fragmentos de INI
para cargar módulos, mientras que el directorio /etc/php5/conf.d/
(esa ruta también puede variar) se está escaneando para archivos INI
:
/etc/php5/conf.d/imap.ini
Ubuntu también cuenta con comandos propietarios para administrar los 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 de PHP IMAP estarán disponibles; la mejor práctica puede ser, verificar si un módulo está incluso cargado , antes de intentar utilizarlo.
En Mac OS X con Homebrew, como obviamente, PHP ya está instalado debido a un error proporcionado que no podemos ejecutar:
Actualización: ¡La última versión de
brew instal php --with-imap
ya no funcionará!
$ brew install php72 --with-imap
Warning: homebrew/php/php72 7.2.xxx is already installed
Además, la instalación del módulo solamente, aquí no funcionará:
$ brew install php72-imap
Error: No available formula with the name "php72-imap"
Entonces, debemos reinstalarlo :
$ brew reinstall php72 --with-imap
Llevará un tiempo :-) (incorporado en 8 minutos 17 segundos)
Lo suficientemente simple, la extensión IMAP no está activada en su instalación de PHP. No está habilitado por defecto . Si su instalación local ejecuta XAMPP en Windows, debe habilitarla tal como se describe en las preguntas frecuentes de XAMPP :
¿Dónde está el soporte IMAP para PHP?
Por defecto, el soporte IMAP para PHP está desactivado en XAMPP, porque hubo algunos misteriosos errores de inicialización 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 de 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 e IMAP debería funcionar. Puede usar los mismos pasos para cada extensión, que no está habilitada en la configuración predeterminada.
Si su instalación local ejecuta XAMPP en Windows, es suficiente: puede abrir el archivo "/ xampp / php / php.ini" para activar la extensió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
Ubuntu con Nginx y PHP-FPM 7 usan esto:
sudo apt-get install php-imap
service php7.0-fpm restart service ngnix restart
compruebe que el módulo se haya instalado php -m | grep imap
La configuración del 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 es centos con php 5.3 instalado.
sudo yum install php53-imap
y reiniciar apache
sudo / sbin / service reinicio de httpd o sudo service apache2 restart
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 que pueda agregar el archivo de objeto compartido de imap y luego, reinicie el servidor Apache. Descomentar
;extension=imap.so
para que se vuelva así:
extension=imap.so
Luego, reinicie Apache por
# /etc/rc.d/httpd restart
en Ubuntu para instalar imap use
sudo apt-get install php-imap
Uso de Ubuntu 14.04 y superior
sudo apt-get install php5-imap
y imap por defecto no habilitado por php, así que use este comando para habilitar la extensión de imap
sudo php5enmod imap
luego reinicia tu apache
sudo service apache2 restart