0

我有一个全新的 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 有一个名为 Allowed Methods 的配置选项,它还发送一个数组!

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

4

4 回答 4

3

我有同样的问题,它是一个已知的错误,在第 1 行尝试这个。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';
}
于 2012-11-20T05:22:34.077 回答
2

这实际上是 Magento 中报告的一个错误,它似乎会影响加密的配置设置(密码、API 密钥等)。

http://www.magentocommerce.com/bug-tracking/issue?issue=14217

于 2012-11-02T14:51:49.843 回答
0

尝试禁用第一个模块,退出管理面板,清除 /var/cache 并查看问题是否仍然存在。如果是这样,请对第二个模块执行相同的操作。

问题应该消失了。现在您知道哪个模块导致了问题,您可以决定尝试另一个模块,或者调试以查看问题所在。

在 /app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Encrypted.php 的第 57 行设置断点,看看哪里出了问题。当第二个参数被赋予 preg_match 函数时,它似乎不是一个字符串(可能是 null,例如由于错误的配置或其他原因)。也许这可以帮助您识别问题。

问候

于 2012-09-07T08:01:07.310 回答
-1

通过后台禁用模块不是一个好主意,因为它只会禁用块输出,如果你想禁用一个模块,你应该去app/etc/modules那里找到Module_Name.xml文件 - 在这个文件中只需放入falsenode.js文件active

于 2012-09-06T21:47:26.770 回答