php5-imap: Warning: imap_open(): Couldn’t open stream

Dieser Fehler kann viele Ursachen haben. Der gravierendste entsteht in Verbindung mit einem Fehler in der libc-client library, welche von php5_imap genutzt wird. Als weitere Problemvariable ist php im Ausführungsmodus als apache module zu sehen. CGI ist davon nicht betroffen.

Bedient man sich der Funktion imap_errors() und es erscheint in der Ausgabe etwas in der Art : Unable to create selectable TCP socket (1054 >= 1024) hat man ggf. ein richtiges Problem.

in der libc-client library gibt es folgende Abfrage

else if (sock >= FD_SETSIZE) {/* unselectable sockets are useless */
   sprintf (tmp,"Unable to create selectable TCP socket (%d >= %d)",
         sock,FD_SETSIZE);

 

Da FD_SETSIZE sehr wahrscheinlich nicht der wirklich maximalen Socketanzahl des Systems entspricht, bricht hier das Script einfach ab mit oben gegebener Fehlermeldung. Zu den Sockets gehören alle offenen Dateiverbindungen des Apache-Prozesses. Also auch Zugriffe auf z.B. Logfiles oder ähnlichem.

Abhilfe schafft eigentlich nur ein Neustart des Servers.

Alternativ dazu könnte man php einfach im CGI Modus ausführen oder den gleichzeitigen Zugriff auf z.B. Logfiles limitieren. Aber diese Maßnahmen sind in manchen Umgebungen noch schwieriger umzusetzen.