web-dev-qa-db-fra.com

Erreur fatale: appel de la fonction non définie imap_open () dans PHP

J'essaie d'accéder à mon compte Gmail via mon hôte local. Cependant, je reçois la réponse:

Erreur fatale: appel de la fonction non définie imap_open ()

Quelqu'un peut-il indiquer ce que je devrais faire pour résoudre le problème?

$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());
51
Sumit

Assez simple, l’extension IMAP n’est pas activée dans votre installation PHP. Ce n'est pas activé par défaut . Si votre installation locale exécute XAMPP sous Windows, vous devez l'activer comme décrit dans la section XAMPP FAQ :

Où se trouve le support IMAP pour PHP?

Par défaut, la prise en charge IMAP de PHP est désactivée dans XAMPP, car il y avait quelques erreurs d'initialisation mystérieuses avec certains à la maison versions comme Windows 98. Qui travaille avec les systèmes NT, peut ouvrir le fichier "\xampp\php\php.ini" pour activer l’expension php en supprimant le commençant par un point-virgule à la ligne ";extension=php_imap.dll". Devrait être: extension=php_imap.dll

Maintenant, redémarrez Apache et IMAP devrait fonctionner. Vous pouvez utiliser les mêmes étapes pour chaque extension, ce qui n'est pas activé par défaut configuration.

78
Lekensteyn

La procédure d'installation est toujours la même, mais le gestionnaire de package et le nom de package varient en fonction de la distribution, de la version et/ou du référentiel utilisés. En général, les étapes sont les suivantes:

a) dans un premier temps, une élévation des privilèges de l'utilisateur est requise, soit obtenue avec les commandes su ou Sudo.

b) alors on peut installer le module absent PHP avec un gestionnaire de paquets.

c) après cela, il est nécessaire de redémarrer le démon HTTP Apache2 pour charger le module.

d) enfin, vous pouvez exécuter php -m | grep imap pour voir si le module PHP est maintenant disponible.

Sur Ubuntu, le package APTphp5-imap (ou php-imap) peut être installé avec apt-get:

apt-get install php5-imap
service Apache2 restart

Sur Debian, le package APTphp5-imap peut être installé aptitude (ou apt-get):

aptitude install php5-imap
Apache2ctl graceful

Sur CentOS et Fedora, le package RPMphp-imap peut être installé avec yum (conseil: le nom du package peut ressembler à php56w-imap ou php71w-imap, lorsque vous utilisez Webtatic repo):

yum install php-imap
service httpd restart

Sur les systèmes systemd, lors de l’utilisation de systemd units , la commande permettant de redémarrer l’unité httpd.service est la suivante:

systemctl restart httpd.service

La solution indiquée ci-dessus a le problème, que lorsque le module a déjà été référencé dans:

/etc/php5/Apache2/php.ini

Il pourrait jeter un:

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

Cela se produit, car il est référencé dans le fichier par défaut php.ini (au moins sous Ubuntu 12.04) et dans un module PHP doit au maximum être référencé une fois. Il est suggéré d’utiliser des extraits INI pour charger des modules, tandis que le répertoire /etc/php5/conf.d/ (ce chemin peut également varier) est en cours d’analyse des fichiers INI:

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

Ubuntu propose également des commandes propriétaires pour gérer les modules PHP, à exécuter avant le redémarrage du serveur Web:

php5enmod imap
php5dismod imap

Une fois que le module IMAP est chargé sur le serveur, les PHP fonctions IMAP devraient alors devenir disponibles; La meilleure pratique est peut-être de vérifier si un module est même chargé avant d'essayer de l'utiliser.

56
Martin Zeitler

sous Ubuntu pour utiliser imap

Sudo apt-get install php-imap

Ubuntu 14.04 et versions ultérieures

Sudo apt-get install php5-imap

et imap par défaut non activé par php, utilisez cette commande pour activer imap extention

Sudo php5enmod imap

puis redémarrez votre Apache  

Service Sudo Apache2 redémarrer

33
pramod kadam

si vous êtes sur linux, éditez le /etc/php/php.ini (ou vous devrez créer un nouveau fichier d'importation d'extension dans /etc/php5/cli/conf.d) afin d'ajouter le fichier d'objet partagé imap, puis redémarrer le serveur Apache. . Uncomment

;extension=imap.so

de sorte que cela devienne comme ceci:

extension=imap.so

Ensuite, redémarrez Apache en

# /etc/rc.d/httpd restart
7
Shiva Nandan

Sur Mac OS X avec Homebrew, bien entendu, PHP est déjà installé à cause d'une erreur fournie, nous ne pouvons pas exécuter:

Mise à jour: La dernière version brew instal php --with-imap ne fonctionnera plus !!!

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

En outre, l'installation du module uniquement ne fonctionnera pas ici:

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

Donc, nous devons réinstaller il:

$ brew reinstall php72 --with-imap

Cela prendra un moment :-) (construit en 8 minutes 17 secondes)

4
Vladimir Vukanac

Au cours de la migration d'Ubuntu 12.04 à 14.04, je suis tombé dessus aussi et je voulais le partager à partir d'Ubuntu 14.04 LTS, l'extension IMAP ne semble plus être chargée par défaut.

Vérifiez si l'extension est installée:

dpkg -l | grep php5-imap

devrait donner une réponse comme ceci:

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

sinon, installez-le.

Activer réellement l'extension

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

devrait résoudre ce problème pour Apache. Pour CLI, faites de même dans /etc/php5/cli/conf.d

4
M5M400

Avec 

echo get_cfg_var('cfg_file_path');

vous pouvez savoir quel fichier php.ini a été utilisé par cette instance de php.

4
abhilashv

si c'est centos avec php 5.3 installé.

Sudo yum installe php53-imap

et redémarrez Apache 

Sudo/sbin/service httpd restart Ou Sudo service Apache2 redémarrer

2
Robert

Ubuntu avec Nginx et PHP-FPM 7 utilisent ceci: 

Sudo apt-get install php-imap

service php7.0-fpm restart service ngnix restart

vérifier que les modules ont été installés php -m | grep imap

La configuration du module imap sera automatiquement activée, à la fois sur cli php.ini et sur fpm php.ini

nano /etc/php/7.0/cli/conf.d/20-imap.ininano /etc/php/7.0/fpm/conf.d/20-imap.ini

1

Si votre installation locale exécute XAMPP sous Windows, cela suffit: vous pouvez ouvrir le fichier "\ xampp\php\php.ini" pour activer l'exstension php en supprimant le point-virgule de début à la ligne "; extension = php_imap.dll". CA devrait etre:

;extension=php_imap.dll

à

extension=php_imap.dll
0
Mahdi Bashirpour

Pour installer IMAP sur PHP 7.0.32 sur Ubuntu 16.04. Aller au lien donné et en fonction de votre région, sélectionnez le lien. Dans mon cas, je sélectionne un lien dans la section Asie. Ensuite, un fichier sera téléchargé. Il suffit de cliquer sur le fichier pour installer IMAP .Puis redémarrer Apache

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

pour vérifier si IMAP est installé, vérifiez phpinfo fichier.incase d'installation réussie IMAP c-Client Version 2007f sera affiché.

0
Amal