PHP Deprecated:不支持将false自动转换为数组



我不知道这是怎么回事。

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将有两个,最多两个成分,pathquery,只有query是可选的。代码片段实际上没有做任何事情,除非您在命令行中运行脚本,在这种情况下,它将抛出未定义数组键"REQUEST_URI"警告。如果您在较早的阶段覆盖$_SERVER['REQUEST_URI'],它只能做一些不同的事情。

修正了我自己的问题

$request = parse_url( rawurldecode( $_SERVER['REQUEST_URI'] ) );

最新更新