webentwicklung-frage-antwort-db.com.de

Schwerwiegender Fehler: Aufruf an undefinierte Funktion imap_open () in PHP

Ich versuche, über mein localhost auf mein Google Mail-Konto zuzugreifen. Ich bekomme jedoch die Antwort:

Schwerwiegender Fehler: Aufruf an undefinierte Funktion imap_open ()

Kann jemand angeben, was ich tun soll, um das Problem zu lösen?

$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

Die IMAP-Erweiterung ist in Ihrer PHP -Installation einfach nicht aktiviert. Es ist nicht standardmäßig aktiviert . Wenn auf Ihrer lokalen Installation XAMPP unter Windows ausgeführt wird, müssen Sie es wie in XAMPP FAQ beschrieben aktivieren:

Wo ist die IMAP-Unterstützung für PHP?

Die IMAP-Unterstützung für PHP ist in XAMPP standardmäßig deaktiviert, da Es gab einige mysteriöse Initialisierungsfehler bei einigen Heimen Versionen wie Windows 98. Wer mit NT-Systemen arbeitet, kann die Datei .__ öffnen. "\xampp\php\php.ini" zum Aktivieren der PHP-Erweiterung durch Entfernen von Beginn des Semikolons in der Zeile ";extension=php_imap.dll". Sollte sein: extension=php_imap.dll

Starten Sie jetzt Apache neu und IMAP sollte funktionieren. Sie können die gleichen Schritte verwenden für jede Erweiterung, die im Standard nicht aktiviert ist Aufbau.

78
Lekensteyn

Die Installationsprozedur ist immer dieselbe, aber der Paketmanager und der Paketname variieren je nach Distribution, Version und/oder Repository. Im Allgemeinen sind die Schritte:

a ) Zunächst ist eine Eskalation der Benutzerrechte erforderlich, entweder mit den Befehlen su oder Sudo.

b ) dann kann man das fehlende PHP Modul mit einem Paketmanager installieren.

c ) Danach muss der HTTP-Daemon _Apache2_ neu gestartet werden, um das Modul zu laden.

d ) Endlich kann man _php -m | grep imap_ ausführen, um zu sehen, ob das PHP -Modul jetzt verfügbar ist.

Auf Ubuntu kann das APT -Paket _php5-imap_ (oder _php-imap_) mit _apt-get_ installiert werden:

_apt-get install php5-imap
service Apache2 restart
_

Unter Debian kann das APT -Paket _php5-imap_ aptitude (oder _apt-get_) installiert werden:

_aptitude install php5-imap
Apache2ctl graceful
_

Auf CentOS und Fedora dem RPM -Paket _php-imap_ kann mit yum installiert werden (Hinweis: Der Name des Pakets kann ähnlich lauten _php56w-imap_ oder _php71w-imap_, wenn Webtatic repo verwendet wird):

_yum install php-imap
service httpd restart
_

Auf systemd Systemen lautet unter Verwendung von systemd units der Befehl zum Neustarten von unit _httpd.service_:

_systemctl restart httpd.service
_

Die oben angegebene Lösung hat das Problem, dass, als das Modul bereits referenziert wurde:

_/etc/php5/Apache2/php.ini
_

Es könnte ein werfen:

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

Das passiert, weil in der Standarddatei _php.ini_ (zumindest unter Ubuntu 12.04) auf sie verwiesen wird und ein PHP -Modul höchstens einmal referenziert werden muss . Es wird empfohlen, INI Snippets zum Laden von Modulen zu verwenden, während das Verzeichnis _/etc/php5/conf.d/_ (dieser Pfad kann ebenfalls variieren) nach INI Dateien durchsucht wird:

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

Ubuntu bietet auch proprietäre Befehle zum Verwalten von PHP Modulen, die vor dem Neustart des Webservers ausgeführt werden:

_php5enmod imap
php5dismod imap
_

Sobald das IMAP -Modul auf den Server geladen wurde, sollte PHP IMAP Functions verfügbar sein. Am besten ist es, zu überprüfen, ob ein Modul überhaupt geladen ist , bevor Sie versuchen, es zu verwenden.

56
Martin Zeitler

in Ubuntu für die Installation imap use

Sudo apt-get install php-imap

Ubuntu 14.04 und höher verwenden

Sudo apt-get install php5-imap

und imap standardmäßig nicht durch PHP aktiviert. Verwenden Sie diesen Befehl, um imap extention zu aktivieren.

Sudo php5enmod imap

dann starte deinen Apache neu 

Sudo-Dienst Apache2 neu starten

33
pramod kadam

wenn Sie mit Linux arbeiten, müssen Sie den Code /etc/php/php.ini bearbeiten (oder Sie müssen eine neue Erweiterungsimportdatei in der Datei /etc/php5/cli/conf.d erstellen), damit Sie die imap shared object-Datei hinzufügen und den Apache-Server neu starten . Unkommentiert

;extension=imap.so

so dass es so wird:

extension=imap.so

Starten Sie dann den Apache neu mit

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

Auf Mac OS X mit Homebrew ist offensichtlich, dass PHP aufgrund eines angegebenen Fehlers bereits installiert ist:

Update: Die neueste Version brew instal php --with-imap wird nicht mehr funktionieren !!!

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

Auch die Installation des Moduls funktioniert hier nicht:

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

Also müssen wir neu installieren it:

$ brew reinstall php72 --with-imap

Es wird eine Weile dauern :-) (in 8 Minuten 17 Sekunden gebaut)

4

Bei der Migration von Ubuntu 12.04 auf 14.04 bin ich auch darüber gestolpert und wollte mitteilen, dass ab Ubuntu 14.04 LTS die IMAP-Erweiterung standardmäßig nicht mehr geladen ist.

Überprüfen Sie, ob die Erweiterung installiert ist:

dpkg -l | grep php5-imap

sollte eine Antwort wie folgt geben:

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

wenn nicht, installieren Sie es.

Um die Erweiterung tatsächlich zu aktivieren

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

sollte es für Apache beheben. Für CLI machen Sie dasselbe in /etc/php5/cli/conf.d

4
M5M400

Mit 

echo get_cfg_var('cfg_file_path');

sie können herausfinden, welche php.ini von dieser Instanz von php verwendet wurde.

4
abhilashv

wenn Centos mit PHP 5.3 installiert ist.

Sudo yum install php53-imap

und starten Sie Apache neu 

Sudo/sbin/service httpd neu starten Oder Sudo-Dienst Apache2 neu starten

2
Robert

Ubuntu mit Nginx und PHP-FPM 7 verwenden dies: 

Sudo apt-get install php-imap

service php7.0-fpm neu starten service ngnix neu starten

Überprüfen Sie, ob das Modul installiert wurde php -m | grep imap

Die Konfiguration für das Modul imap wird automatisch aktiviert, sowohl bei cli php.ini als auch bei fpm php.ini

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

Wenn in Ihrer lokalen Installation XAMPP unter Windows ausgeführt wird, ist Folgendes ausreichend: Sie können die Datei "\ xampp\php\php.ini" öffnen, um die PHP-Exstension zu aktivieren, indem Sie das Semikolon an der Zeile "; extension = php_imap.dll" entfernen. Es sollte sein:

;extension=php_imap.dll

zu

extension=php_imap.dll
0

So installieren Sie IMAP unter PHP 7.0.32 unter Ubuntu 16.04. Gehen Sie zum angegebenen Link und wählen Sie den Link für Ihren Bereich aus. In meinem Fall wähle ich einen Link aus dem Asien-Bereich. Dann wird eine Datei heruntergeladen. Klicken Sie einfach auf die Datei, um IMAP zu installieren. Starten Sie dann Apache neu

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

um zu überprüfen, ob IMAP installiert ist, überprüfen Sie phpinfo file.incase auf eine erfolgreiche Installation IMAP c-Client Version 2007f wird angezeigt.

0
Amal