簡體   English   中英

Zend \\ Mail \\ Storage \\ Imap.php是否掛斷了我的服務器?

[英]Is Zend\Mail\Storage\Imap.php hanging up my server?

我正在嘗試學習/理解Zend Framework,以通過IMAP檢索電子郵件。 我們的網絡主機未在我們的網絡服務器上啟用IMAP擴展,並且我安裝了osTicket。 我想用相關的Zend_Mail引用替換osTicket中的IMAP函數引用,但是要做到這一點,我需要更好地了解Zend_Mail。

我擁有Zend Framework 2.2.5,並已盡力閱讀了本文檔,但是大多數文檔實際上都是針對以前的版本的,盡管我在盡力調整以閱讀更新的版本,但有些事情我只是不明白。

我已經創建了一個測試腳本來入門,但是我不了解這里到底發生了什么,而是希望能有所幫助。 這是我的腳本(為匿名起見,個人詳細信息已明顯修改):

<?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' => 'support@gmail.com',
    '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());

?>

這似乎沒有任何錯誤,除非include_once語句之后什么都沒有發生。 這是返回到我的屏幕的內容:

字符串(57)“ /usr/home/username/public_html/domain.com/”

字符串(65)“ /usr/home/username/public_html/domain.com/support/”

字符串(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.log”文件,但該文件為空,並且Runscope看不到腳本在運行嗎?

似乎您正在嘗試遵循ZF1示例,但使用ZF2,這是可以理解的,但不幸的是,它無法正常工作。

首先,安裝Composer- http://getcomposer.org/-它會使一切變得更容易。 我建議您使用“全局”安裝選項(此答案的其余部分將假定您已完成)。

在項目的根文件夾中,創建一個composer.json文件(其中列出了項目的依賴項)。 在其中輸入:

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

這將Zend Mail列為依賴項,還列出了PHP 5.3.3(ZF2最低要求)。

運行composer install進行安裝。 下載文件時,您會看到一些輸出。 完成后,它應該已經創建了一個名為vendor的文件夾,並在其中安裝了ZF2郵件類。

然后,您可以將整個腳本簡化為:

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

$mail_config = array(
    'host' => 'imap.gmail.com',
    'user' => 'support@gmail.com',
    'password' => 'password',
    'ssl' => 'SSL',
    'port' => 993
);

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

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

您可以刪除放在zend/library/的ZF2副本(假設您沒有將其用於其他任何用途)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM