aliyun / aliyun-oss-php-sdk

Aliyun OSS SDK for PHP
MIT License
994 stars 348 forks source link

8.0以上PHP版本null值报错 #290

Closed gigiah closed 6 months ago

gigiah commented 7 months ago

src/OSS/SignerV1.php 18行:strlen($credentials->getSecurityToken()) 如果$credentials->getSecurityToken() = null, strlen会触发报错 27行:parse_str($queryString, $query); $queryString = null, parse_str会报错

ShaBaoFa commented 7 months ago

+1 而且不光是这个问题。 SingerV1 的 25-27行

        $queryString = parse_url($request->request_url, PHP_URL_QUERY);
        $query = array();
        parse_str($queryString, $query);

如果request里没有query,会导致 $queryString = null,然后 parse_str 会报错。

明明 presign 里 使用的是

        $parsed_url = parse_url($request->request_url);
        $queryString = isset($parsed_url['query']) ? $parsed_url['query'] : '';
        $query = array();
        parse_str($queryString, $query);

不知道为什么 signpresign 的写法是不一致的。

ShaBaoFa commented 7 months ago
50f03d7ace328929b7d67e799b81fa3 2b29aad9fbd66c1596e5803262f0559

java里的解决方案就很好,php从2.4开始就一直是这样子写。(印象里)

huiguangjun commented 6 months ago

以提交 到 https://github.com/aliyun/aliyun-oss-php-sdk/commit/efca2592105d9425ce32a46215b51a2273ead222