2013-12-17 5 views
0

IMAP을 통해 전자 메일 메시지를 검색하는 Zend Framework를 배우거나 이해하려고합니다. 우리 웹 호스트는 우리 웹 서버에서 IMAP 확장을 사용하지 않으며 osTicket이 설치되어 있습니다. osTicket의 IMAP 함수 참조를 상관 관계가있는 Zend_Mail 참조로 바꾸고 싶습니다.하지만 Zend_Mail을 좀 더 잘 이해할 필요가 있습니다.Zend Mail Storage Imap.php는 내 서버를 끊고 있습니까?

저는 젠드 프레임 워크 2.2.5를 가지고 있으며 문서를 읽는 데 최선을 다했지만 대부분의 문서는 이전 버전을 대상으로하고 있으며 업데이트 된 버전을 읽는 데 최선을 다하고 있지만, 내가 이해하지 못하는 것 몇 가지가있다.

나는 시작을위한 테스트 스크립트를 만들었지 만, 여기서 실제로 일어나고있는 것을 이해하지 못하고 있으며 약간의 방향을 기대하고 있습니다. 아무것도 include_once 문 문 뒤에 발생하지 제외

<?php 
/******************************************************* 
* simple php script to verify zend mail functionality * 
*              * 
********************************************************/ 

define('ROOT_DIR',$_SERVER['DOCUMENT_ROOT'].'/'); 
define('SUPPORT_DIR',ROOT_DIR.'support/'); 
define('INCLUDE_DIR',SUPPORT_DIR.'include/'); 
define('ZEND_DIR',INCLUDE_DIR.'zend/library/'); //ZendFramework-2.2.5 

$root = ROOT_DIR; 
$support = SUPPORT_DIR; 
$incl = INCLUDE_DIR; 
$zendir = ZEND_DIR; 

var_dump($root); 
echo "\n"; 
var_dump($support); 
echo "\n"; 
var_dump($incl); 
echo "\n"; 
var_dump($zendir); 
echo "\n"; 

echo "Include Imap... "; 
include_once(ZEND_DIR.'Zend/Mail/Storage/Imap.php'); 
if ((include_once(ZEND_DIR.'Zend/Mail/Storage/Imap.php')) !== 1) 
{ 
    echo 'Include Imap failed.'; 
    echo "<br>"; 
} 

chdir($zendir); 
echo getcwd() . "\n"; 

$mail_config = array(
    'host' => 'imap.gmail.com', 
    'user' => '[email protected]', 
    'password' => 'password', 
    'ssl' => 'SSL', 
    'port' => 993 
); 

var_dump($mail_config); 
echo "\n"; 

$mail = new Zend_Mail_Storage_Imap($mail_config); 
var_dump($mail); 

echo "\n"; 
var_dump($count = $mail->countMessages()); 

?> 

이 오류없이 실행 나타납니다 : 여기 (개인 정보가 분명히 익명을 위해 수정 된) 내 스크립트입니다. 이것은 나의 화면으로 돌아됩니다 것입니다 :

문자열 (57) "/usr/home/username/public_html/domain.com/"

문자열 (65) "는/usr/홈/사용자 이름/으로 public_html/domain.com/지원/"

문자열 (73) "/usr/home/username/public_html/domain.com/support/include/ "

문자열 (86) "은/usr/home/username/public_html/domain.com/support/include/zend/library/"

스토리지 \ IMAP을 ... 포함

그것은에 getcwd() 또는 위해서 var_dump의 배열 중 하나 또는 메시지의 수를 표시하지 않습니다. 필자는 if 문을 변경해 보았습니다. include_once가 성공적이었고 표시되지 않은 경우 명령문을 반향하도록 작업했는지 확인했습니다.

스크립트가 zend \ mail \ storage \ imap.php에 끊어지고 있습니까? 내가 여기서 올바르게하지 않는 것은 무엇입니까? 내가 말했듯이, 나는 그것을 배우려고 노력하고 있고, v2.2.5를 사용하는 코드 예제를 위해 높고 낮음을 찾고 있었지만 분명히 뭔가 빠졌습니다. 이게 뭐야?

편집 :

은 phpinfo() 내 오류 로그의 위치를 ​​보여, 그래서 내가 처음 내 테스트 스크립트에 다음을 추가하지 않았다

ini_set('track_errors', 1); 
error_reporting(E_ALL|E_STRICT); 
error_log($php_errormsg,3,"/usr/home/username/public_html/domain.com/support/test/error_log.log"); 

은 그것은 "의 error_log를 만들었습니다. 로그 "파일을 만들었지 만 비어 있고 Runscope는 스크립트가 실행되는 것을 보지 못했습니까?

+0

오류가 발생했습니다. 화면에 표시되지 않습니다. 오류 로그를 확인하십시오. 오류와 함께 돌아 오십시오;) (그것이 포함되어 있습니다.) – skrilled

+0

테스트 목적으로 Runscope를 통해이 스크립트를 실행하고 있으며 상태 200으로 실행됩니다. 어디에서 오류 로그를 찾을 수 있습니까?)? FWIW - Pop3을 위해 Imap을 바꿔서 같은 결과를 얻었습니다. – mittra

+0

@mittra' user555

답변

0

ZF1 예제를 따르지만 ZF2를 사용하는 것처럼 보이지만 이해할 수는 있지만 불행히도 작동하지 않습니다.

먼저, 작곡가 인 http://getcomposer.org/을 설치하면 모든 것이 더 쉬워집니다. 나는 '글로벌'설치 옵션으로 갈 것을 권한다. (나머지 대답은 당신이 해왔다고 가정한다.)

프로젝트의 루트 폴더에 composer.json 파일 (프로젝트의 종속성을 나열)을 만듭니다.

{ 
    "require": { 
     "php": ">=5.3.3", 
     "zendframework/zend-mail": "2.*" 
    } 
} 

이 목록은 젠드 메일을 종속성으로 나열하고 PHP 5.3.3 (ZF2는 최소한으로 요구함)을 나열합니다.

실행하려면 composer install을 실행하십시오. 파일을 다운로드 할 때 출력이 표시됩니다. 완료되면 vendor이라는 폴더를 만들어 ZF2 메일 클래스를 설치해야합니다.

전체 스크립트는 다음이 단순화 될 수있다

<?php 
require 'vendor/autoload.php'; 

$mail_config = array(
    'host' => 'imap.gmail.com', 
    'user' => '[email protected]', 
    'password' => 'password', 
    'ssl' => 'SSL', 
    'port' => 993 
); 

$mail = new \Zend\Mail\Storage\Imap($mail_config); 

$count = $mail->countMessages(); 
var_dump($count); 

당신은 당신이 zend/library/에 넣어 ZF2의 사본을 제거 할 수 있습니다 (당신이 다른 용도로 사용하지 않을 가정).

+0

포인터, Tim을 고맙게 생각하지만 실제로 문제를 해결할 것이라고는 생각하지 않습니다. 이 테스트 스크립트를 작성하여 Zend Framework를 더 잘 이해할 수 있도록 osTicket 용 스크립트를 수정하여 IMAP 기능 대신 Zend Mail을 사용할 수있게했습니다. ZF2에 대한 문서와 예제를 어디에서 찾을 수 있는지 알고 있습니까? – mittra

+0

테스트 스크립트에서 수행하려고했던 작업을 정확히 수행 한 예제를 제공했지만, 내가 제공 할 수있는 것이 무엇인지 확신 할 수 없습니다. Composer를 기존 응용 프로그램에 통합하려는 경우에도 여전히 Composer를 사용하는 것이 좋습니다. –

+0

Composer를 설치할 수 없습니다. 우리 호스트는 분명히 "allow_url_open"이 비활성화되어 있고 .ini 파일을 수정할 수 없으며 "php -d"를 사용하면 도움이되지 않습니다. 필자가 정말로 필요로하는 것은 ZF2의 최신 문서 및 코딩 예제이므로 IMAP 기능과 Zend Mail 기능 간의 상관 관계를 알아낼 수 있습니다. – mittra