PHP-连接到Exchange Web服务的问题
我刚刚开始熟悉使用ExchangeWeb服务(EWS)和Web上提供的指导原则(例如) 我有一个测试服务器,在那里我得到了正确的响应。当我将完全相同的文件移动到生产服务器时,我没有得到响应(空白页),PHP通知如下:PHP-连接到Exchange Web服务的问题,php,class,variables,soap,exchangewebservices,Php,Class,Variables,Soap,Exchangewebservices,我刚刚开始熟悉使用ExchangeWeb服务(EWS)和Web上提供的指导原则(例如) 我有一个测试服务器,在那里我得到了正确的响应。当我将完全相同的文件移动到生产服务器时,我没有得到响应(空白页),PHP通知如下: Notice: Trying to get property of non-object in index.php on line 48 index.php第44至48行: 44 - $FindFolder->Traversal = 'Shallow'; 4
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\u dump($client)
返回正确的数据。但在将类对象转换为第47行中的变量后:$result=$client->…
avar\u dump($result)
返回NULL
(在生产服务器上,但在测试服务器中充满数据)
我知道PHP类是区分大小写的,但我认为这种情况是正确的,这在测试服务器上是有效的
有什么想法吗?
更新#1
我添加了有关var_转储的更多详细信息,用于跟踪问题。这些转储都放置在第47行之后:
变量转储($FindFolder)
变量转储($client)
变量转储($result)
更新#2为了确保这一点,我在生产服务器上测试了cURL,它可以正常工作。我还注意到,测试服务器和生产服务器的var_转储略有不同:
["user":protected]
来自测试服务器的var_转储($client)的相关部分:
["user:protected"]
来自生产服务器的var_转储($client)的相关部分:
["user":protected]
引号不在同一个地方。这是否相关并导致查询无法连接,从而无法返回数据?如果是这样,我该如何解决这个问题?FindFolder是否返回一个对象(例如返回$this) 方法链接需要返回一个对象
最后,我想我已经找到了PHP5.3.3中的一个bug,或者是PHP5.3.3中带有Exchange的Talking SOAP中的一个bug 我最好的猜测是,在原始帖子的更新2中提到的受保护变量的措辞中有一个bug 运行PHP 5.1.1和其他5.2.17的服务器的相关
var_dump($client)
:
["user:protected"]
运行PHP 5.3.3的服务器的相关var_dump($client)
:
["user":protected]
因此,我想我将不得不改用旧版PHP的托管提供商。我在原始帖子中添加了更详细的var_转储跟踪。如果这不能完全回答您的问题,请告诉我。我会尽我所能回答你的回答,但我还是个初学者:)
["user:protected"]
["user":protected]