我无法启用或禁用模块。我收到“保存此配置时出错”

时间:2012-09-06 20:58:00

标签: magento magento-1.7

我有一个新的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有一个名为“允许的方法”的配置选项,它还发送一个数组!

我仍然不知道为什么它之前没有发生过,现在却发生了。他们不应该加密一切。有线索吗?

4 个答案:

答案 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节点。