php ews连接到Exchange 2010

时间:2015-03-20 13:34:18

标签: php browser exchangewebservices exchange-server-2010 php-ews

我从https://github.com/jamesiarmes/php-ews下载了PHP ews数据库。

Autoloader:

function __autoload ($className){
  preg_match ("/^(([a-zA-Z]{5})_)?(.+)$/",$className,&$treffer); # die ersten 5 Stellen=Verzeichnisname, Weitere Zeichen=Dateiname
  if(file_exists(PROJEKT_DIR.$className.".class.php"))  include_once(PROJEKT_DIR.$className.".class.php"); 
  else{
    $pfad=SCRIPT_DIR."include/";
    if($treffer[2]) $pfad.="classes/".$treffer[2]."/";
    if(file_exists($pfad.$treffer[3].".class.php"))
      include_once($pfad.$treffer[3].".class.php");
    elseif(substr($treffer[3],-7)!="_bvstnd" and class_exists($className."_bvstnd")){
      eval("class  $className extends ".$className."_bvstnd {} ");
    }
        else{
        // Start from the base path and determine the location from the class name,
        $pfad=SCRIPT_DIR."include/php-ews";
        $include_file = $pfad . '/' . str_replace('_', '/', $className) . '.php';

        return (file_exists($include_file) ? require_once $include_file : false);

        }
  }

  #if(file_exists(SCRIPT_DIR."include/".$className.".class.php"))
  #  include_once(SCRIPT_DIR."include/".$className.".class.php");
}

它还会加载一些其他文件。

然后我开始从他的网站上做指南,我开始这样做:

<?php

$host = "*********";
$username="**********";
$password="***********";
$version= "***********";

$ews = new ExchangeWebServices($host, $username, $password, $version);


$request = new EWSType_FindFolderType();
$request->Traversal = EWSType_FolderQueryTraversalType::SHALLOW;

$request->FolderShape = new EWSType_FolderResponseShapeType();

$request->FolderShape->BaseShape = EWSType_DefaultShapeNamesType::ALL_PROPERTIES;

// configure the view
$request->IndexedPageFolderView = new EWSType_IndexedPageViewType();

$request->IndexedPageFolderView->BasePoint = 'Beginning';
$request->IndexedPageFolderView->Offset = 0;

// set the starting folder as the inbox
$request->ParentFolderIds = new EWSType_NonEmptyArrayOfBaseFolderIdsType();

$request->ParentFolderIds->DistinguishedFolderId = new EWSType_DistinguishedFolderIdType();

$request->ParentFolderIds->DistinguishedFolderId->Id = EWSType_DistinguishedFolderIdNameType::INBOX;

// make the actual call
$response = $ews->FindFolder($request);

?>

首先,浏览器上的网站加载时间很长,但请告诉我类似的内容:class Exception is undefined。我无法说出正确的消息,因为现在如果加载脚本,这条消息就不会出现了。

浏览器只是无限加载。在此之后,我甚至无法使用我的PHP文件连接到我的服务器。我必须打开我的其他浏览器再次连接。

如果我在其他浏览器中打开脚本,那么我可以再次运行脚本,但它再次加载无限。 (我在自动加载器中包含了我需要的所有文件,因此不是问题)

有没有人有这样的问题并找到解决方案?

1 个答案:

答案 0 :(得分:0)

您的自动加载器有问题。该库的默认文件加载如下:

$pfad=SCRIPT_DIR."include/php-ews";
$include_file = $pfad . '/' . str_replace('_', '/', $className) . '.php';

如果您的自动加载器是第一个尝试加载该异常的,它将替换'_'。如果你在自动加载器函数中放入一个error_log,你可能会看到$inlcude_file的结果是

include/php-ews/EWS/Exception

该文件不存在。

因此,您应该修复自动加载器,以便它可以实际找到该文件。

要清楚地说清楚:

  • 您(代码)正在寻找班级EWS_Exception
  • 这是在文件EWS_Exception.php(在项目的根目录中)
  • 您替换所有_
  • 时,您的自动加载器无法找到该文件

所以解决方法是修复自动加载器,或者只是将EWS_Exception.php文件包含在某处。