сценарий вымирает и содержимое запрашивается для загрузки из-за fsockopen - как это исправить - PullRequest
0 голосов
/ 14 июля 2010

Я работаю с 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.

РЕДАКТИРОВАТЬ ==========================

Я обнаружил проблему - по какой-то причине выбрасывается исключение, и оно действительно глубоко вложено. Но что я не понимаю, так это поведение запроса загрузки файла вместо вывода любой формы сообщения об ошибке или около того.

1 Ответ

0 голосов
/ 14 июля 2010

Во-первых, что на самом деле в PHP-файле, который принудительно нужно загрузить.

также, я думаю, зенд-код не проблема.

В вашем контроллере, где вы запускаете $???->connect(); попробуйте сделать это

try
{
    $mail->connect();
}cache(Zend_Mail_Protocol_Exception $Exception)
{
     die("Debug: " . $Exception->toString());
}

Чтобы увидеть, имеет ли это какое-либо влияние?

...