我有一个新的Magento 1.7.0.2新安装。我安装了两个工作正常的自定义付款方式模块。但现在每当我尝试禁用或启用任何付款方式或送货方法时,它都会给我一个错误:
保存此配置时出错:警告: preg_match()期望参数2是字符串,给定的数组 /app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Encrypted.php 在第57行
你知道为什么吗?
编辑2:
我发现了问题。它是由我应用于修复以前的BUG的补丁引起的。 :P
编辑:
所以我禁用了所有自定义模块,但我仍然遇到了同样的错误。我记录了发生的事情,似乎有些核心模块正在发送要保存的数组。
例如PayPal Express Checkout。其中一个配置选项是“结算报告设置”的SFTP凭据中的“时间”。它由三个不同的下拉列表组成,它发送一个数组来保存!
在运输方式中,UPS有一个名为“允许的方法”的配置选项,它还发送一个数组!
我仍然不知道为什么它之前没有发生过,现在却发生了。他们不应该加密一切。有线索吗?
答案 0 :(得分:3)
我有同样的问题,它是一个已知的bug,试试这个问题。 135代码/ core / mage / Adminhtml / model / config / data.php
// add this code
$backendClass=false;
if (isset($fieldConfig->backend_model)) {
$backendClass = $fieldConfig->backend_model;
} // before this
if (!$backendClass) {
$backendClass = 'core/config_data';
}
答案 1 :(得分:2)
这实际上是Magento中报告的一个错误,它似乎会影响加密的配置设置(密码,API密钥等)。
http://www.magentocommerce.com/bug-tracking/issue?issue=14217
答案 2 :(得分:0)
尝试禁用第一个模块,注销管理面板,清除/ var / cache并查看问题是否仍然存在。如果是,请对第二个模块执行相同操作。
问题应该消失了。既然您知道哪个模块会导致问题,您可以决定尝试另一个模块,也可以调试以查看问题是什么。
在/app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Encrypted.php的第57行放置一个断点,看看出了什么问题。当它给preg_match函数时,第二个参数似乎不是一个字符串(例如由于错误的配置或其他东西可能为null)。也许这可以帮助您找出问题。
问候
答案 3 :(得分:-1)
通过后台禁用模块不是一个好主意,因为它只会禁用块输出,如果你想禁用模块,你应该去app/etc/modules
,你应该找到Module_Name.xml
file - 在此文件中只将false
放入active
节点。