microsoftgraph / microsoftgraph/msgraph-sdk-php

OPCache bug

Aperta
#1,653 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

status:waiting-for-triage type:bug
Lingua principale
PHP
Stelle
669
Fork
150
Merge medio
15h 21m
PR unite (30g)
3

Descrizione

Describe the bug

Hi,

I'm using your library for Microsoft SSO. I only need to fetch basic user information like: getId, getMail, getGivenName, getSurname, and getUserPrincipalName. I’m doing this with the following script:

However, the doctrine/annotations library recently fixed a bug that affects our integration: https://github.com/doctrine/annotations/pull/446/files

I’m using OPCache, so option opcache.save_comments with the flag value set as 0. So while you are using PhpDoc I'm getting error from: https://github.com/doctrine/annotations/blob/2.0.x/lib/Doctrine/Common/Annotations/AnnotationReader.php#L122

Expected behavior

The only place where PhpDoc data is read is here: https://github.com/microsoft/kiota-abstractions-php/blob/main/src/RequestInformation.php#L66 - and microsoft/kiota-abstractions-php is a dependency of microsoftgraph/msgraph-sdk-php-core.

The dependency chain is quite large, but it seems that in my case, I don’t have any query parameters - and those are likely required for this issue to occur.

How can I work around this problem, aside from enabling comments in the cache?

How to reproduce

Set option opcache.save_comments with the flag value as 0

$tokenRequestContext = new AuthorizationCodeContext(
    tenantId: $config['tenant'],
    clientId: $config['clientId'],
    clientSecret: $config['clientSecret'],
    authCode: $params[self::PARAM_IN_CODE],
    redirectUri: $config['redirectUri'],
);

$graphServiceClient = new GraphServiceClient($tokenRequestContext, $config['scopes']);

$user = $graphServiceClient->me()->get()->wait();

$userData = [
    'id' => $user->getId(),
    'userPrincipalName' => $user->getUserPrincipalName(),
    'userEmail' => $user->getMail(),
    'userFirstName' => $user->getGivenName(),
    'userLastName' => $user->getSurname(),
];

// ...
SDK Version

2.25.0

Latest version known to work for scenario above?

No response

Known Workarounds

No response

Debug output
Click to expand log ```
</details>


### Configuration

_No response_

### Other information

_No response_

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia da src/RequestInformation.php alla riga 66 e confronta il suo utilizzo di PhpDoc con AnnotationReader.php di doctrine/annotations alla riga 122. Riproduci la richiesta GET dell'utente con opcache.save_comments impostato su 0, quindi determina se l'SDK può evitare il percorso di annotazione che causa l'errore o documentare chiaramente un workaround supportato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
php
Ambito
api
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
28/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.