0

私は、Exchange Webサービス(EWS)とWebで提供されているガイドライン(たとえば、ExchangeとのSOAPの会話)の使用に慣れてきました。

正しい応答が得られるテストサーバーがあります。を本番サーバーに移動するexact same filesと、次のPHP通知で応答がありません(空白のページ)。

Notice: Trying to get property of non-object in index.php on line 48

index.php 44行目から48行目:

    44 - $FindFolder->Traversal = 'Shallow';
    45 - $FindFolder->FolderShape->BaseShape = 'AllProperties';
    46 - $FindFolder->ParentFolderIds->DistinguishedFolderId->Id = 'root';
    47 - $result = $client->FindFolder($FindFolder);
    48 - $folders = $result->ResponseMessages->FindFolderResponseMessage->RootFolder->Folders->Folder;

47行目以降はvar_dump($client)正しいデータを返します。しかし、その後line 47: $result = $client->...var_dump($result)リターンでClassオブジェクトを変数に変えた後NULL(本番サーバーではありますが、テストサーバーではデータでいっぱいです)。

PHPクラスでは大文字と小文字が区別されることは知っていますが、大文字と小文字は正しいようで、これはテストサーバーで機能します。

何か案は?

アップデート#1

問題を追跡するためのvar_dumpsに関する詳細を追加しました。これらのダンプはすべて、47行目の後に配置されます。

var_dump($ FindFolder)

object(stdClass)#2 (3) { ["Traversal"]=> string(7) "Shallow" ["FolderShape"]=>
object(stdClass)#3 (1) { ["BaseShape"]=> string(13) "AllProperties" } ["ParentFolderIds"]=>
object(stdClass)#4 (1) { ["DistinguishedFolderId"]=> object(stdClass)#5 (1) { ["Id"]=> 
string(4) "root" } } } 

var_dump($ client)

object(ExchangeNTLMSoapClient)#1 (5) { ["user":protected]=> string(6) "***hidden***"
["password":protected]=> string(8) "***hidden***" ["_soap_version"]=> int(1) ["sdl"]=>
resource(3) of type (Unknown) ["__last_request_headers"]=> array(5) { [0]=> string(12)
"Method: POST" [1]=> string(22) "Connection: Keep-Alive" [2]=> string(25) "User-Agent:
PHP-SOAP-CURL" [3]=> string(37) "Content-Type: text/xml; charset=utf-8" [4]=> string(85)
"SOAPAction: "http://schemas.microsoft.com/exchange/services/2006/messages/FindFolder"" } } 

var_dump($ result)

NULL

アップデート#2
念のため、本番サーバーでcURLをテストしたところ、動作しました。また、テストサーバーと本番サーバーのvar_dumpにわずかな違いがあることに気付きました。

テストサーバーからのvar_dump($ client)の関連部分:

["user:protected"]

本番サーバーからのvar_dump($ client)の関連部分:

["user":protected]

引用符は同じ場所にありません。それは関連性があり、クエリが接続されず、データが返されない原因になっていますか?もしそうなら、どうすればそれを修正できますか?

4

2 に答える 2

0

FindFolderはオブジェクトを返しますか(例:$ thisを返します)?

メソッドチェーンでは、オブジェクトを返す必要があります。

http://www.talkphp.com/advanced-php-programming/1163-php5-method-chaining.html

于 2012-12-20T11:32:17.047 に答える
0

最後に、これはPHP5.3.3またはPHP5.3.3を使用したExchangeとのTalkingSOAPのバグに起因すると思います。

私の推測では、元の投稿の更新2で言及されているように、保護された変数の表現方法にバグがあります。

var_dump($client)PHP 5.1.1および別の5.2.17を実行しているサーバーに関連:

["user:protected"]

var_dump($client)PHP 5.3.3を実行しているサーバーに関連:

["user":protected]

だから私は私が推測する古いバージョンのPHPを備えたホスティングプロバイダーに変更する必要があります。

于 2012-12-21T12:19:25.717 に答える