microsoftgraph / microsoftgraph/msgraph-sdk-php
OPCache bug
まだ誰も着手していません。
- 主要言語
- PHP
- スター
- 669
- フォーク
- 150
- 平均マージ
- 15時間 21分
- マージ済み PR(30日)
- 3
説明
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_
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
src/RequestInformation.php の 66 行目から始め、PhpDoc の使用方法を doctrine/annotations の AnnotationReader.php の 122 行目と比較します。opcache.save_comments を 0 に設定してユーザーの GET リクエストを再現し、その後、SDK が失敗する annotation パスを回避できるか、またはサポートされている workaround を明確に文書化できるかを判断します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- php
- 領域
- api
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 28/100