Я работаю с Zend Framework, и недавно у меня была ужасная проблема с моим кодом. На самом деле я разрабатываю веб-интерфейс для электронной почты, и пользователи вводят данные своего почтового сервера и могут проверить свою электронную почту через мою систему.
Проблема заключается в том, что всякий раз, когда я пытаюсь подключиться к почтовому серверу, моя система иногда просто отключается, и вместо этого мне предлагается загрузить индексную страницу, т.е. страницу, на которой выполняется - конечно, я получаю пустую страницу, но это не должно происходить.
Я провел некоторую проверку и обнаружил, что код умирает в классе Zend_Mail_Protocol_Imap в функции соединения, а также в коде, который говорит:
$this->_socket = fsockopen($host, $port, $errno, $errstr, self::TIMEOUT_CONNECTION);
в строке 94 в размещенной ссылке.
Что мне здесь делать, как настроить проверку, чтобы обойти это хотя бы выяснить, что здесь произошло: (
Вы можете посмотреть на скриншоте, что я видел здесь:
альтернативный текст http://img714.imageshack.us/img714/6558/problemh.jpg
EDIT ==================
Мой код, который я на самом деле запускаю [я просто использую библиотеки здесь]:
$mailConfig = array('host' => $current_dept->incoming_server,
'port'=>$current_dept->incoming_port, 'folder'=>$mbox_name,
'user' =>$current_dept->email,
'password' =>$current_dept->email_psd);
$mailConfig['ssl'] ='ssl';
try{
if($mail)
unset($mail);
$mail = new Zend_Mail_Storage_Imap($mailConfig);
}catch (Zend_Mail_Exception $e) {
var_dump($e);
exit;
}
fsockopen находится в классе Zend_mail_protocol_Imap, который впоследствии вызывается в конструкторе класса zend_mail_storage_imap.
несмотря на то, что он заключен в блок try catch, он даже не запускает блок try catch.
Кроме того, запрашиваемый файл для загрузки - это просто пустой файл с тем же именем, что и исполняемый файл php.
РЕДАКТИРОВАТЬ ==========================
Я обнаружил проблему - по какой-то причине выбрасывается исключение, и оно действительно глубоко вложено. Но что я не понимаю, так это поведение запроса загрузки файла вместо вывода любой формы сообщения об ошибке или около того.