php-ews icon indicating copy to clipboard operation
php-ews copied to clipboard

object has no 'Periods' property

Open fglueck opened this issue 8 months ago • 2 comments

I upgrade to current version v0.10.2. Now I got this follow Error:

PHP Fatal error: Uncaught SoapFault: SOAP-ERROR: Encoding: object has no 'Periods' property in C:\Users\fglueck\git\cockpit\inc\vendor\garethp\php-ews\src\API\NTLMSoapClient.php:120 Stack trace: #0 C:\Users\fglueck\git\cockpit\inc\vendor\garethp\php-ews\src\API\NTLMSoapClient.php(120): SoapClient->__call('GetFolder', Array) #1 C:\Users\fglueck\git\cockpit\inc\vendor\garethp\php-ews\src\API\ExchangeWebServices\MiddlewareFactory.php(18): garethp\ews\API\NTLMSoapClient->__call('GetFolder', Array) #2 C:\Users\fglueck\git\cockpit\inc\vendor\garethp\php-ews\src\API\ExchangeWebServices.php(516): garethp\ews\API\ExchangeWebServices->garethp\ews\API\ExchangeWebServices{closure}(Object(garethp\ews\API\MiddlewareRequest), Object(Closure)) #3 C:\Users\fglueck\git\cockpit\inc\vendor\garethp\php-ews\src\API\ExchangeWebServices\MiddlewareFactory.php(32): garethp\ews\API\ExchangeWebServices->garethp\ews\API{closure}(Object(garethp\ews\API\MiddlewareRequest)) #4 C:\Users\fglueck\git\cockpit\inc\vendor\garethp\php-ews\src\API\ExchangeWebServices.php(516): garethp\ews\API\ExchangeWebServices->garethp\ews\API\ExchangeWebServices{closure}(Object(garethp\ews\API\MiddlewareRequest), Object(Closure)) #5 C:\Users\fglueck\git\cockpit\inc\vendor\garethp\php-ews\src\API\ExchangeWebServices\MiddlewareFactory.php(48): garethp\ews\API\ExchangeWebServices->garethp\ews\API{closure}(Object(garethp\ews\API\MiddlewareRequest)) #6 C:\Users\fglueck\git\cockpit\inc\vendor\garethp\php-ews\src\API\ExchangeWebServices.php(516): garethp\ews\API\ExchangeWebServices->garethp\ews\API\ExchangeWebServices{closure}(Object(garethp\ews\API\MiddlewareRequest), Object(Closure)) #7 C:\Users\fglueck\git\cockpit\inc\vendor\garethp\php-ews\src\API\ExchangeWebServices\MiddlewareFactory.php(55): garethp\ews\API\ExchangeWebServices->garethp\ews\API{closure}(Object(garethp\ews\API\MiddlewareRequest)) #8 C:\Users\fglueck\git\cockpit\inc\vendor\garethp\php-ews\src\API\ExchangeWebServices.php(516): garethp\ews\API\ExchangeWebServices->garethp\ews\API\ExchangeWebServices{closure}(Object(garethp\ews\API\MiddlewareRequest), Object(Closure)) #9 C:\Users\fglueck\git\cockpit\inc\vendor\garethp\php-ews\src\API\ExchangeWebServices\MiddlewareFactory.php(66): garethp\ews\API\ExchangeWebServices->garethp\ews\API{closure}(Object(garethp\ews\API\MiddlewareRequest)) #10 C:\Users\fglueck\git\cockpit\inc\vendor\garethp\php-ews\src\API\ExchangeWebServices.php(516): garethp\ews\API\ExchangeWebServices->garethp\ews\API\ExchangeWebServices{closure}(Object(garethp\ews\API\MiddlewareRequest), Object(Closure)) #11 C:\Users\fglueck\git\cockpit\inc\vendor\garethp\php-ews\src\API\ExchangeWebServices.php(526): garethp\ews\API\ExchangeWebServices->garethp\ews\API{closure}(Object(garethp\ews\API\MiddlewareRequest)) #12 C:\Users\fglueck\git\cockpit\inc\vendor\garethp\php-ews\src\API\ExchangeWebServices.php(317): garethp\ews\API\ExchangeWebServices->executeMiddlewareStack(Array, Object(garethp\ews\API\MiddlewareRequest)) #13 C:\Users\fglueck\git\cockpit\report\office\off_ews.php(289): garethp\ews\API\ExchangeWebServices->__call('GetFolder', Array) #14 C:\Users\fglueck\git\cockpit\report\office\off_ews.php(297): off_ews->getFolder(Array) #15 C:\Users\fglueck\git\cockpit\report\office\off_ews.php(1250): off_ews->getFolderByFolderId('AAMkADY1MDIzMDc...', 'fglueck@..') #16 C:\Users\fglueck\git\cockpit\report\office\off_ews.php(1352): off_ews->sync_user(Array) #17 C:\Users\fglueck\git\cockpit\report\office\off_ews.php(1485): off_ews->syncAll() #18 C:\Users\fglueck\git\cockpit\report\batch\batch_ews.php(39): off_ews::sync('fglueck') #19 Command line code(1): batch_ews->batch() #20 {main}

I set options to by ini file: version = Exchange2013_SP1 MailboxCulture = "de-DE" timezone = "W. Europe Standard Time"

I try it also with Exchange2013, Exchange2010, ... it dosn't makes no difference.

$api = API::withCallbackToken('outlook.office365.com', $token, $conf['options']);

Here are my methods, that create the parameters: public function getFolderByFolderId(string $folderId, string $mailbox) { return $this->getFolder([ 'FolderId' => ['Id' => $folderId, 'Mailbox' => $mailbox] ]); } public function getFolder(array $identifier) : Type\BaseFolderType { $request = [ 'FolderShape' => [ 'BaseShape' => [ '_' => 'AllProperties' ] # AllProperties|Default ] , 'FolderIds' => $identifier ]; $request = Type::buildFromArray($request); return $this->api()->getClient()->GetFolder($request); }

fglueck avatar Mar 21 '25 09:03 fglueck

When I downgrade to 0.10.1 it works fine. So I can exclude sideeffects with guzzle upgrade.

fglueck avatar Mar 27 '25 15:03 fglueck

I have same issue SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'Periods' property in vendor/garethp/php-ews/src/API/NTLMSoapClient.php:120

vasly avatar May 29 '25 13:05 vasly

@kambereBr Can you please a look at this one? Thanks!

marclaporte avatar Aug 21 '25 11:08 marclaporte

Can you please a look at this one? Thanks!

Of course, I’ll take a look. Thanks!

kambereBr avatar Aug 21 '25 12:08 kambereBr

This should be fixed in master, and I'll release a version for it soon

Garethp avatar Aug 30 '25 22:08 Garethp