所以我升级到PHP 8并运行我的脚本,这给了我这个错误:
致命错误:未捕获的类型错误:count():参数#1($value)必须是可计数类型|数组,在C:\xampp\htdocs\app\includes\functions\create_session.php中给定了空值。
堆栈追踪:
(508)您访问的页面不存在!会话-〉检查子功能访问(22,0)
第78行,在C中抛出了#1 {main}
这是由于PHP 8中的一个新的更新,不允许在count函数中使用非数组值,并抛出一个致命的错误,停止进一步的脚本执行。例如,如果你有一个$_POST['checkboxes_checked']
,你做count($_POST['checkboxes_checked'])
,它会给予上面的错误,因为默认情况下它不认为它是一个数组。要修复这个错误,你可以:count((array)$_POST['checkboxes_checked']))
,它修复了该问题。
但是,在我的例子中,问题是我有几百个文件需要修复这个问题,我不想进入每个文件并修复这个问题,因为这将是非常耗时的。有没有办法配置PHP 8忽略这个问题,并仍然继续使用这些$_POST参数的count函数?或者某种搜索/替换regex,我可以运行的所有文件,替换count($_POST['some_parameter_name'])
与count((array)$_POST['some_parameter_name']))
?老实说,我不知道我如何可以修复这个问题,而不手动进入每个文件,这是我需要你的帮助的部分。
1条答案
按热度按时间jhkqcmku1#
一个临时的解决方案是定义您自己的
count()
函数。例如:这只是一个简单的例子,你最好使用
(array)
前缀。现在,您需要做的就是将代码中出现的所有
count(
替换为oldCount(
,这样就完成了。**警告:**这只是一个临时的解决方案。每次使用它都需要一个额外的函数调用,PHP 8没有引入更严格的无理由的:它是为了保护您。请尽快更新您的代码。