我想不出这有什么问题。PHP 8.1 PHP已弃用:不建议使用false到数组的自动转换
$request = parse_url( $_SERVER['REQUEST_URI'] ); $request['path'] = ( ! empty( $request['path'] ) ) ? $request['path'] : '';
velaa5lx1#
此模式很可能是一个错误:
$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是可选的。代码片段实际上没有做任何事情,除非您在命令行中运行脚本,在这种情况下,它将抛出 Undefined array key“REQUEST_URI”警告。只有在早期阶段覆盖$_SERVER['REQUEST_URI']时,它才能做一些不同的事情。
false
$_SERVER['REQUEST_URI']
var_dump($_SERVER['REQUEST_URI'])
REQUEST_URI
path
query
w6lpcovy2#
修正了我自己的问题。
$request = parse_url( rawurldecode( $_SERVER['REQUEST_URI'] ) );
2条答案
按热度按时间velaa5lx1#
此模式很可能是一个错误:
所以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
是可选的。代码片段实际上没有做任何事情,除非您在命令行中运行脚本,在这种情况下,它将抛出 Undefined array key“REQUEST_URI”警告。只有在早期阶段覆盖$_SERVER['REQUEST_URI']
时,它才能做一些不同的事情。w6lpcovy2#
修正了我自己的问题。