reset()-“严格标准:仅变量应通过引用传递”

BHW*_*HWD 1 php reference strict

我目前正在将网站移交给客户。从我收集到的信息来看,他们的旧主机必须使用旧版本的PHP。该站点当前正在其当前主机上工作。我正在努力将其移至他们的新主机,并且出现以下错误:

PHP严格标准:第17行上的/home/parcelt2/core/public_html/loader.php中只能通过引用传递变量

下面是一段代码,第17行已标出

$uri = parse_url($_SERVER['REQUEST_URI']);
if (substr($uri['path'], -1, 1) == '/' && !sizeof($_POST)) {
$new_uri = substr($uri['path'], 0, -1);
if (strlen($new_uri) > 0) {
    $page = reset(explode('/', $new_uri));  //line 17
    if (!in_array($page, $exempt_requests)) {
        if (isset($uri['query']) && strlen($uri['query']) > 0) {
            $new_uri .= '?' . $uri['query'];
        }
        header('HTTP/1.1 301 Moved Permanently');
        header('Location: ' . $new_uri, true, 301);
        exit;
    }
}
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供修复或有关如何解决此问题的建议吗?我尝试阅读有关此错误的其他SO帖子,但发现它们很难理解。

谢谢

ಠ_ಠ*_*ಠ_ಠ 5

reset()引用数组(变量),因此它不适用于函数调用的结果。

您需要执行以下操作:

$arr = explode('/', $new_uri);
$page = reset($arr);
Run Code Online (Sandbox Code Playgroud)

但是,返回的数组explode()已经将其内部指针设置为第一个元素。您根本不需要调用reset。