我不知道这是怎么回事。
PHP8.1PHP Deprecated:不支持将false自动转换为数组
$request = parse_url( $_SERVER['REQUEST_URI'] );
$request['path'] = ( ! empty( $request['path'] ) ) ? $request['path'] : '';
这个模式很可能是一个bug:
$foo = false;
$foo['name'] = 'Jimmy';
PHP会发出警告:
Deprecated:不支持将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']
,它只能做一些不同的事情。
修正了我自己的问题
$request = parse_url( rawurldecode( $_SERVER['REQUEST_URI'] ) );