我不明白这有什么问题。
PHP 8.1 PHP 已弃用:不推荐将 false 自动转换为数组
$request = parse_url( $_SERVER['REQUEST_URI'] );
$request['path'] = ( ! empty( $request['path'] ) ) ? $request['path'] : '';
解决了我自己的问题。
$request = parse_url( rawurldecode( $_SERVER['REQUEST_URI'] ) );
这种模式很可能是一个错误:
$foo = false;
$foo['name'] = 'Jimmy';
PHP 现在对此发出警告:
已弃用:不推荐将 false 自动转换为数组
...并且该代码很可能在未来的 PHP 版本中完全停止工作。
在您的情况下,
false
来自parse_url():
对于严重格式错误的 URL,parse_url() 可能会返回 false。
检查
$_SERVER['REQUEST_URI']
以找出 PHP 无法将其解析为 URL 的原因。使用单步调试器,或者使用 var_dump($_SERVER['REQUEST_URI'])
。
另一方面,目标是什么并不完全清楚(至少在没有进一步背景的情况下)。
REQUEST_URI
最多有两个分量,path
和 query
,并且只有 query
是可选的。代码片段实际上并没有做任何事情,除非您在命令行中运行脚本,在这种情况下,它将抛出 未定义的数组键“REQUEST_URI”警告。如果您在早期阶段覆盖 $_SERVER['REQUEST_URI']
,它只能做不同的事情。