1、在 PHP 7.4 中报错:Cannot redeclare getFirstSkuIndex()。表示函数 getFirstSkuIndex() 已被定义。PHP不支持重定义已声明的函数。如图1

Plaintext
[2023-01-09 10:28:00] local.ERROR: Cannot redeclare getFirstSkuIndex() (previously declared in E:\wwwroot\object\storage\framework\views\f7c14c1d27c4ea3f4d0e1c60a5009bfe9a47c438.php:7) {
"exception": "[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 64): Cannot redeclare getFirstSkuIndex() (previously declared in E:\\wwwroot\\object\\storage\\framework\\views\\f7c14c1d27c4ea3f4d0e1c60a5009bfe9a47c438.php:7) at E:\\wwwroot\\object\\storage\\framework\\views\\f7c14c1d27c4ea3f4d0e1c60a5009bfe9a47c438.php:7)
[stacktrace]
#0 {main}
"
}
2、参考:https://www.shuijingwanwq.com/2022/11/14/7149/ ,现在是因为同一个文件被重复引入(业务上允许重新引入)。进而导致同一个函数被重复定义。
3、查看被引入文件的代码实现
PHP
function getFirstSkuIndex ($product) {
// ...
}
return getFirstSkuIndex($product);
4、将函数声明为闭包函数,然后赋值给变量,PHP 会自动把此种表达式转换成内置类 Closure 的对象实例。且设置为静态匿名函数。编辑后的被引入文件的代码实现,在重新执行引入的重复文件时,函数 $getFirstSkuIndex 会简单地覆盖之前的声明。不再报错。
PHP
$getFirstSkuIndex = static function ($product) {
// ...
};
return $getFirstSkuIndex($product);
需要长期技术维护或远程问题排查?
我是拥有 15+ 年经验的 PHP / Go 后端工程师,长期关注已有系统维护、Bug 修复、性能优化、服务器排查、WordPress 网站维护和小功能迭代。
如果你的项目遇到以下情况,可以先从一次小问题排查开始合作:
- ✅ PHP / Laravel / Yii2 老项目无人维护
- ✅ Go / Gin 后端接口需要排查或优化
- ✅ WordPress 网站访问慢、报错或插件冲突
- ✅ Nginx / MySQL / Redis / Linux 服务器异常
- ✅ CDN / Cloudflare / DNS / HTTPS 配置问题
- ✅ 需要长期远程技术支持或兼职维护
更多介绍请查看:关于我 & 合作
微信:13980074657
邮箱:shuijingwanwq@gmail.com
Telegram:@shuijingwan
GitHub:https://github.com/shuijingwan

发表回复