On 16 Jul 2008, at 12:36, Dermot Buckley wrote:
>
>
> We get the following warning:
>
> PHP Warning: Zend_Mail_Protocol_Abstract::require_once(Zend/Mail/
> Protocol/Exception.php) [<a href='function.Zend-Mail-Protocol-
> Abstract-require-once'>function.Zend-Mail-Protocol-Abstract-require-
> once</a>]: failed to open stream: No such file or directory in /
> Library/WebServer/Documents/CBDB/library/Zend/Mail/Protocol/
> Abstract.php on line 275
>
> followed by ...
>
> PHP Fatal error: Zend_Mail_Protocol_Abstract::require_once() [<a
> href='function.require'>function.require</a>]: Failed opening
> required 'Zend/Mail/Protocol/Exception.php' (include_path='.:../
> library:../application/models:../incubator/library:.:../library')
> in /Library/WebServer/Documents/CBDB/library/Zend/Mail/Protocol/
> Abstract.php on line 275
Just for the sake of completeness, I'll post the resolution to this
problem:
For reasons as yet unknown (to me at least), the working directory for
php changes during object destruction (at least on several of our
servers here). A side effect of this is that if you're using relative
paths in the include path, dynamic loading of php files will fail
during __destruct calls.
So the fix for me was to change the include path entries to absolute
paths. The exception is still thrown in
Zend_Mail_Protocol_Smtp::quit(), but it is caught and ignored as was
intended.
Hopefully this will be of help to someone in the future, it cost me
nearly a day to find.
Dermot.