Closed gigiah closed 6 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);
不知道为什么 sign 和 presign 的写法是不一致的。
java里的解决方案就很好,php从2.4开始就一直是这样子写。(印象里)
src/OSS/SignerV1.php 18行:strlen($credentials->getSecurityToken()) 如果$credentials->getSecurityToken() = null, strlen会触发报错 27行:parse_str($queryString, $query); $queryString = null, parse_str会报错