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());
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.
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
ouSudo
.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 APT
php5-imap
(ou php-imap
) peut être installé avec apt-get
:
apt-get install php5-imap
service Apache2 restart
Sur Debian, le package APT
php5-imap
peut être installé aptitude
(ou apt-get
):
aptitude install php5-imap
Apache2ctl graceful
Sur CentOS et Fedora, le package RPM
php-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.
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
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
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)
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
Avec
echo get_cfg_var('cfg_file_path');
vous pouvez savoir quel fichier php.ini a été utilisé par cette instance de php.
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
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
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
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é.