致命错误:在 PHP 8.0 中不再支持使用花括号的数组和字符串偏移量访问语法 pkcs5_unpad。

7

我从教程复制代码后遇到了这个错误。它已经过时,我尝试解决:

在.../app/Http/Helpers/helpers.php中,使用大括号的数组和字符串偏移访问语法不再被支持。

我复制的代码:

if (!function_exists("pkcs5_unpad_e")) {
    function pkcs5_unpad_e($text) {
        $pad = ord($text{strlen($text) - 1});
        if ($pad > strlen($text))
            return false;

        return substr($text, 0, -1 * $pad);
    }
}

我的编辑:用[.....]替换{....} ==> HTTP错误500

if (!function_exists("pkcs5_unpad_e")) {
    function pkcs5_unpad_e($text) {
        $pad = ord($text[strlen($text) - 1]);
        if ($pad > strlen($text))
                return false;
            
        return substr($text, 0, -1 * $pad);
    }
}

我正在使用Ubuntu 20.04数字海洋Cyberpanel服务器和PHP 8。


1
你的第二段代码(当你使用 [ ] 而不是 { } 时)是正确的,因为如前面的提示所示,{ } 已经被弃用了... 而且在访问 array 时,你也从来没有必要使用 { },而是一直使用 [ ]... 所以请将你的代码改为 [ ],当你遇到错误 500 时,请查看日志并与我们分享... - matiaslauriti
谢谢大家,这段代码在php8上无法运行。 - TopMTV
只需将“{}”更改为“[]”,即可与PHP 8一起使用。如果您的代码无法正常工作,则问题可能出在其他地方,除非您分享有关您遇到的错误的一些信息,否则我们无法做任何其他事情。 - nxasdf
1个回答

14

只需将{}替换为[]

附:不知道为什么没有人创建答案而是发了评论。所以请标记此问题已解决。

补充:我将此答案标记为社区,因为我不希望因别人提供的解决方案而获得积分。

查看控制台错误并对其进行修改

输入图像描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接