Questions tagged «bug»

有关Magento中(可疑)错误的问题。对于您自己的代码中的扩展名或错误,请勿添加“错误”标签。

13
Magento core_url_rewrite表过大
我注意到大量报告称此表本身可能变得非常混乱,我正在运行一个站点,该站点具有约5000个SKU和约250个类别(单个存储),结果core_url_rewrite表超过600,000行,且表超过500MB,疯了 这可能会降低站点性能,并导致数据库非常庞大。我做了一些挖掘,发现了很多与此相关的帖子,最值得注意的是: Core_url_rewrite错误:在索引上生成的每个产品的大量重复URL Magento Commerce-错误跟踪-问题#29020 //自新板实施以来,这些链接已被删除 现在我知道该表可以被截断并重新建立索引,但这并不能解决问题,只是延长了问题再次发生的时间。 据我了解,部分问题是产品具有基于产品名称的相同url键,从而导致建立索引链接。 提到的解决方法是: app/code/core/Mage/Catalog/Model/Url.php 线上〜807: 更改: if ($product->getUrlKey() == '' && !empty($requestPath) && strpos($existingRequestPath, $requestPath) === 0 ) 至: if (!empty($requestPath) && strpos($existingRequestPath, $requestPath) === 0 ) 但这甚至不能完全解决问题。 我的问题如下: 如果您遇到此问题,您是否能够建立一种有效,逻辑和高效的算法,而无需反复“管理”该问题,而实际上是一劳永逸地解决问题? 非常感谢您对此有所了解。 顺便说一句:请帮个忙,检查一下您的桌子现在是什么样子,您可能会遇到此问题,并因此而对性能产生影响,我什至不知道-我不知道。 编辑:我已经与www.Nexcess.net(Magento铂金托管合作伙伴)进行了联系,他们已经确认,他们已经要求客户core_url_rewrite由于过于庞大而要求将桌子截断。 我最担心的是这可能会对SEO产生影响,这就是为什么我想要一个解决方案,而不是再次拖延问题的原因。 更新: Nexcess提到表中有重复的产品,实际上可能会实际上损害SEO。

1
为什么对EAV和标签没有部分重新索引?
这个问题困扰了我一段时间。 为什么在Magento 1.13.xx中引入的改进错误修复程序称为部分重新索引,却没有涵盖“产品属性”和“标签聚合数据”索引器?为什么这两个必须手动重新索引? 在我看来,EAV指数是最关键的指标之一。没有部分重新索引意味着在每次销售(有些人拥有)之后,索引将失效,这意味着分层导航不再有效,这将导致数据显示不一致和销售损失。 我是否缺少明显的东西? 更新: 因此,这里是此bug的描述。一旦完成销售并且产品缺货,分层导航将仅针对简单产品而不是可配置产品(未测试捆绑和分组)反映产品属性的更改。 因此,假设您的目录中有一个可配置的产品(如T恤)有不同的尺寸,并且“尺寸”属性为“可过滤(带有结果)”。然后,在相应类别或搜索结果的分层导航中,您将看到尺寸部分,其中列出了所有可用尺寸。如果完成其中一项销售后,某个尺寸的商品缺货,您可能会希望它从分层导航中消失。除非刷新属性索引和刷新块缓存,否则不会发生这种情况。 这个错误真的很关键。这是两种威胁。首先,最终客户在分层导航中看到自己的尺寸,然后发现实际上不可用,这会让您的商店感到沮丧。更糟糕的是,一旦产品重新入库,在分层导航中就不会显示出来,因此最终客户将无法购买。因此,很难低估收入损失的数额。

5
如何在Mage_Catalog_Model_Resource_Product_Collection上设置商店ID?
这项任务是微不足道的。我需要获取启用了平面目录的特定商店视图的产品列表。最明显的解决方案如下: $collection = Mage::getResourceModel('catalog/product_collection') ->setStore($storeId); 实际上,setStore()方法在这里没有什么区别,因为方法是在_initSelect()方法Mage_Catalog_Model_Resource_Product_Collection基于商店ID获得平面表的名称之后调用的。由于尚未设置商店ID,因此它将采用当前商店ID。 因此,显而易见的解决方法是在获取模型之前设置当前商店ID。 Mage::app()->setCurrentStore($storeId); $collection = Mage::getResourceModel('catalog/product_collection'); 会的。但仅当您需要一次收集一次时。如果您需要循环获取一个集合,或者只需要两个背对背集合,则将无法为其设置特定的商店。 原因是Mage_Catalog_Model_Resource_Product_Flat该类具有其自己的_storeId属性,并且在构造函数中将其设置为当前商店ID。这就是为什么它将被第一次设置。然后由于某种原因(天堂知道我希望有一个)在Mage_Eav_Model_Entity_Collection_Abstract::_init每个资源模块中被作为单例获取。因此,没有第二个调用的构造函数。 这一切看起来都非常错误,以至于我很确定我错了,这不是另一个(或两个)Magento错误。希望有人能对此有所启发。


1
如何报告Magento错误并提交错误修正,以便有可能被关闭?
我在Magento 1.x中发现了一个错误,并且还找到了一个错误修复。我在哪里举报?Magento核心开发人员可以在哪里看到它?在Magento的bug跟踪系统似乎被忽略,并没有维护(例如见这个问题)。 您实际上可以签署《Magento贡献者协议》以提交补丁,但是我听说甚至经常拒绝这些补丁。那么还有其他方法可以将补丁添加到Magento内核中吗? 借助GitHub上的Magento 2,一切似乎都变得更好了。但我认为Magento 1错误修正也应该存在...
23 magento-1  core  bug 


4
Magento 1 EE v 1.14.3.x(和CE 1.9.3.x)中的会话验证失败
我正在照顾一个Magento商店,每天有400-500位访客和40-50个订单。最近系统从Magento EE 1.14.2.4升级到Magento EE 1.14.3.2,我注意到日志中有一些奇怪的异常: exception 'Mage_Core_Model_Session_Exception' in /var/www/.../app/code/core/Mage/Core/Model/Session/Abstract/Varien.php:418 我正在追逐该异常,并且我确实知道该异常已被触发,因为以下会话验证代码无法验证会话: class Mage_Core_Model_Session_Abstract_Varien extends Varien_Object { // ... protected function _validate() { // ... if ($this->useValidateSessionExpire() && isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP]) && $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] < time() ) { Magento使用最新发行版将此if块添加到文件中。这显然是一种制动变化,请参阅下面的更多详细信息。 例外情况经常发生,例如每天十几次。但是除非我在上面的条件中完全符合条件,否则我无法重新创建导致异常的条件。例外最常见于产品详细信息页面和一页结帐的最后一步。该商店是b2b商店,用户必须登录才能查看产品页面或能够结帐,这意味着会话无效/过期时,用户将被重定向到登录页面。目前,对我来说更重要的是在结帐时解决此问题。 从用户的角度来看,发生了什么:用户填充购物车,继续进行结帐并到达最后一步,然后他/她单击“提交订单”按钮,但没有任何反应。在后台,Magento的JS执行AJAX请求,并且JS希望收到JSON,但是如果发生此错误,则会返回登录页面的HTML,JavaScript无法解析该HTML,并且它什么也不做。这对于用户而言超级混乱。 好吧,这不是完整的用户方案,我们联系了用户,他们告诉我们,他们在填充购物车和提交订单之间等待了几天,这实际上很难弄清楚,因为人们根本不记得这一点。 PHP会话生存期-350000(以秒为单位约4天)Cookie生存期-345600(4天) 这是实际的问题: 我如何找出导致这种异常的用户行为? 更新 到目前为止,我知道根据所提出的请求,以下类中会发生异常,对我而言,这并不意味着没有任何异常。 /catalogsearch/result/?q=… Mage_Core_Model_Session /checkout/cart/ Mage_Core_Model_Session /checkout/onepage/saveOrder/… Mage_Rss_Model_Session /customer/account/loginPost/ Mage_Core_Model_Session …

4
EE 1.14.2 / CE 1.9.2:报价项目在登录时未正确合并(购物车中的重复产品)
我在购物车的Magento EE 1.14.2中发现了一个奇怪的错误(也影响到CE 1.9.2)。 重现步骤: 以客户A身份登录 将产品X添加到购物车 切换到其他浏览器 将产品X添加到购物车 以客户A身份登录 预期购物车: 2 x产品X 实际购物车: 1 x产品X 1 x产品X 即产品未合并。 除了切换浏览器,您还可以清除会话cookie或为产品选择其他数量。 最严重的副作用是每件商品应用了最大订购量。就我而言,产品有100%的折扣,但您只能订购一次。有了这个小技巧,您可以免费订购任何数量的产品。 为什么会发生这种情况,如何预防呢?

3
PHP 5.5 Bug-不推荐使用的功能:preg_replace()
升级到PHP 5.5后,添加网站,商店或商店视图时出现以下错误。Magento 1.9.0.1中仍然存在此错误 Exception message: Deprecated functionality: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in app/code/core/Mage/Core/Helper/Abstract.php on line 238 Trace: #0 [internal function]: mageCoreErrorHandler(8192, 'preg_replace():...', 'app...', 238, Array) #1 app/code/core/Mage/Core/Helper/Abstract.php(238): preg_replace('# <(?![/a-z]) |...', 'htmlentities('$...', 'New Store Name') #2 app/code/core/Mage/Adminhtml/controllers/System/StoreController.php(175): Mage_Core_Helper_Abstract->removeTags('New Store Name') #3 app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Adminhtml_System_StoreController->saveAction() #4 app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('save') …
16 bug  php-5.5 

2
“前端控制器达到100个路由器匹配迭代”错误的原因是什么?
作为一个Magento开发人员,我已经无数次面对这个问题,我知道这是一个配置错误问题,当某些模块未加载,它们的路由器也未加载而导致该错误时。大多数情况下,它不执行任何操作即可解决,其他时候,您可以刷新缓存 我已经阅读了许多有关此的文章,试图调试在Magento核心Front控制器中放置一些额外的代码app/code/core/Mage/Core/Controller/Varien/Front.php,但是最后这仅显示缺少的模块路由器,而不是为什么未加载它们。每次发生这种情况时,我都会尝试查看哪些URL给出了错误,但这是无用的信息,与代码跟踪相同。总是一样 也许是由于模块冲突引起的?也许是cron任务做错了什么?也许在旧的Magento版本中有一些错误的代码?问题是从1.7版本开始不会发生此问题(或者如果发生,则完全是零星的)。我发现主流中有一些代码差异,例如 Mage::register('application_params', $params); 在的run()方法中app/code/core/Mage/Core/Model/App.php,或 $this->_shouldSkipProcessModulesUpdates() 签入_initModules()方法... 我想相信应该有明确找到原因的人。有小费吗?


1
管理员配置:根据选定的多选值显示字段
我想显示基于选定的multiselect输入的字段...如果仅选择一个值,则下面的代码将起作用。如果我选择了多个值,则它仅显示一个字段(首先从源模型中选择) <enabled> <label>Enabled</label> ... <source_model>adminhtml/system_config_source_enabledisable</source_model> </enabled> <!-- this gives three options - shop, ebay, amazon --> <channels> ... <frontend_type>multiselect</frontend_type> <source_model>module/system_config_source_channels</source_model> <depends> <enabled>1</enabled> </depends> </channels> <mail_template_shop> ... <depends> <enabled>1</enabled> <channels>shop</channels> </depends> </mail_template_shop> <mail_template_ebay> ... <depends> <enabled>1</enabled> <channels>ebay</channels> </depends> </mail_template_ebay> 相关代码: app / code / core / Mage / Adminhtml / Block …

1
如何报告Magento Enterprise中的错误?
我在Magento Enterprise 1.13中发现了“网站限制”和“单页签出”的错误。尽管我正在开发一种解决方法,但我也想提交一个故障单。 尝试报告错误时,可用版本仅限于Community Edition。报告企业中的错误的正确过程是什么?

3
数据URI和CSS文件合并问题
Magento CSS文件合并将主机名假装成我的data-uris,因为Mage_Core_Model_Design_Package(beforeMergeCss)中的RegEx 无法正常工作。它应该在主机名之前添加相对的图像路径,但不能在数据URI之前。 $cssUrl = '/url\\(\\s*(?!data:)([^\\)\\s]+)\\s*\\)?/'; $contents = preg_replace_callback($cssUrl, array($this, '_cssMergerUrlCallback'), $contents); CSS代码: background: #fafafa url("data:image/svg+xml;base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iM3B4IiB2aWV3Qm94PSIwIDAgNiAzIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA2IDMiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwb2x5Z29uIHBvaW50cz0iNS45OTIsMCAyLjk5MiwzIC0wLjAwOCwwICIvPjwvc3ZnPg==") no-repeat; 合并后的结果: background: #fafafa url("http://shop12.dev/skin/frontend/shop/default/styles/data:image/svg+xml;base64")PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iM3B4IiB2aWV3Qm94PSIwIDAgNiAzIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA2IDMiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwb2x5Z29uIHBvaW50cz0iNS45OTIsMCAyLjk5MiwzIC0wLjAwOCwwICIvPjwvc3ZnPg==") no-repeat; 如何避免这种情况?我找不到如何纠正所用RegEx的合奏的方法。(对我来说,使用GIF并不是真正的解决方案)
9 magento-1.8  css  bug  regex 

1
配置“取决于”前端和后端模型
我在配置中的“依赖”功能上遇到困难。 通常,添加<depends>到某些配置选项后,除非给定选项的值匹配,否则它是隐藏的。 例如: <option_one> <label>Option 1</label> ... </option_one> <option_two> <label>Option 2</label> ... <depends><option_one>1</option_one></depends> </option_two 显然,我缺少一些领域,但是您明白了。仅当选项1的值为“ 1”时,选项2才会出现。 现在我的问题是,当我尝试将其应用于带有后端和前端模型的选项时,这种依赖不起作用: <option_three> ... <frontend_model>module/adminhtml_form_field_test</frontend_model> <backend_model>adminhtml/system_config_backend_serialized_array</backend_model> ... <depends><option_one>1</option_one></depends> </option_three> 此选项不会考虑选项1,它始终可见。 我是在做错什么,还是一个错误,还是“按设计工作”?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.