【发布时间】:2021-09-29 04:37:13
【问题描述】:
更新到 PHP8 后,我的网站开始崩溃并出现错误
PHP 消息:PHP 致命错误:未捕获的 ArgumentCountError:parse_str() 只需要 2 个参数,给定 1 个
我相信 php 8 语法有一些变化,但我不确定。我曾经使用php 7.4
有问题的行是:
$url_vars = parse_str($parse_url['query'] ?? 0);
有问题的脚本部分如下:
if ( $referrer !== FALSE && $referrer !== '' && stripos($referrer, '://') )
{
$parse_url = parse_url($referrer);
$domain = $parse_url['host'];
$query = $parse_url['query'] ?? 0;
$dotdomain = '.'.$domain;
if ( strlen($parse_url['query'] ?? 0) >= 1 )
{
$url_vars = parse_str($parse_url['query'] ?? 0);
if (FALSE === empty($url_vars['q']))
{
$utm_keyword = $url_vars['q'] ?? 0;
}
}
更熟悉 php 8 的人能看到上面代码中的任何明显错误吗?
【问题讨论】:
-
明显错误很明显。请参阅php.net/manual/en/function.parse-str.php,尤其是在上面写着:
8.0.0 result is no longer optional.。将$url_vars移动到函数内部,因为函数不返回任何内容。