如何解决独立OpenCart邮件脚本调用$config->get()的报错问题?
解决OpenCart独立脚本中无法调用$config->get()的问题
我太懂这种头疼的情况了——你开发了一个独立于插件的邮件发送面板,已经在OpenCart后台加了启用/禁用的开关选项,但脚本里死活拿不到这个设置,还报了Call to a member function get() on a non-object的错对吧?
其实问题根源很直白:你的独立脚本没有初始化OpenCart的核心运行环境,$config对象根本就没被创建出来,自然没法调用它的get()方法。
修复步骤
你需要在脚本开头先加载OpenCart的核心文件,初始化必要的类,具体代码参考下面:
// 首先引入OpenCart的主配置文件和启动文件 // 注意:根据你的脚本所在位置调整路径,如果脚本在OpenCart根目录下,直接用下面的路径 require_once('config.php'); require_once('system/startup.php'); // 初始化Registry对象(OpenCart用来管理核心类的容器) $registry = new Registry(); // 创建Config类实例并注册到Registry $config = new Config(); $registry->set('config', $config); // 加载OpenCart的系统设置(包括你添加的sendemails_status) $config->load('setting'); // 现在就可以正常使用$config->get()了 if ($config->get('sendemails_status')) { $store_id = $config->get('config_store_id'); // 这里写你的邮件发送逻辑 }
关键说明
- 路径调整:如果你的脚本不在OpenCart根目录,比如放在
admin/custom/下,那config.php的路径就要写成../config.php,system/startup.php写成../system/startup.php,确保能正确引入文件。 $config->load('setting')这一步会把OpenCart后台所有的设置项加载到Config对象里,这样你就能拿到自己添加的sendemails_status了。
内容的提问来源于stack exchange,提问作者LiveEn
相关产品推荐
相关产品推荐

