2009-07-08 2 views
1

Einer unserer E-Mail-Parsing-Scripts hat ein Problem imap Funktionen:IMAP aktiviert, aber Funktionen undefiniert?

Fatal error: Call to undefined function imap_open()

IMAP ist auf jeden Fall aktiviert, es wurde mit PHP erstellt und zeigt in der phpinfo nach oben() und wenn get_loaded_extensions() oder extension_loaded("imap") tun Gibt es eine Warum sind diese Funktionen möglicherweise nicht zugänglich?

IMAP-Version ist 2007e und PHP ist 5.3.

Edit 1: Dies läuft auf einem Mac-Server (OSX 10.5.7) Das Skript mit der IMAP-Funktion ist in/var/***/Ich habe versucht, eine Testdatei in/Library/WebServer/Document (die Web Root) mit imap_open mit genau den gleichen Details und es scheint zu funktionieren.

Die Art der Einrichtung funktionierte vor einem PHP-Update - gibt es einen Grund dafür, dass es nicht mehr funktioniert? Ich weiß, ich könnte verschieben Sie das E-Mail-Skript in den Webserver Dokumente dir, aber ich würde auch gerne wissen, warum es aufhören würde zu arbeiten, wie es vorher war - könnte es die Art sein, wie PHP konfiguriert ist?

+0

Was ist die Ausgabe von var_dump (get_extension_funcs ('imap')); ? – VolkerK

+0

Zu lange zum Posten, aber es zeigt alle IMAP-Funktionen (71) in einem Array. (includes imap_open) – Tjkoopa

+0

Und Sie legen dieses Code-Snippet genau in die Skriptdatei, wo der Aufruf von imap_open() nicht funktioniert, direkt vor dem Aufruf von imap_open()? I.e. Sie sehen imap_open() in der var_dump Ausgabe _and_ "alle zu undefined Funktion imap_open()" gleichzeitig? – VolkerK

Antwort

3

Mit

echo get_cfg_var('cfg_file_path'); 

können Sie herausfinden, welche php.ini hat von dieser Instanz von PHP verwendet. Sie werden wahrscheinlich sehen, dass das php apache-Modul (oder ist es php-cgi?) Und die php cli-Version (verwendet von Ihrem cronjob) verschiedene .ini-Dateien verwenden.
Je nachdem, wie Sie PHP installiert haben (und wie diese Version von PHP kompiliert wurde), analysiert das Apache-Modul möglicherweise auch zusätzliche .ini-Dateien, die Ihre CLI-Version nicht enthält. Um zu überprüfen, ob dies der Fall laufen ist

<?php phpinfo(); ?> 

in Ihrem Webserver und suchen Sie nach einem Eintrag „zusätzliche INI-Dateien analysiert“.
In jedem Fall müssen Sie darauf achten, dass die von der CLI-Version verwendete Konfiguration die Anweisung extension = php_imap ... enthält.

+0

Ich überprüfte die Crontab nach Ihrem letzten Kommentar und sie .sh-Skript, das es lief, spezifizierte die falsche php-Instanz - ich änderte es und es funktioniert. Spot auf Antwort - danke. – Tjkoopa