-1

https://github.com/jamesiarmes/php-ewsから PHP ews データベースをダウンロードしました。

オートローダー:

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 ファイルを使用してサーバーに接続することさえできません。再度接続するには、別のブラウザを開く必要があります。

他のブラウザでスクリプトを開くと、スクリプトを再度実行できますが、再び無限にロードされます。(オートローダーに必要なすべてのファイルを含めているので、それは問題ではありません)

誰かがそのような問題を抱えていて、解決策を見つけましたか?

4

1 に答える 1

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ファイルをどこかに含めることです。

于 2015-03-23T11:41:08.733 に答える