Magento bug – Checkout cart 500 error – Redirect loops
Magento checkout cart gives 500 error and redirect loops when there is a shopping cart rule with Category condition.
I found a bug in Magento which redirects shopping cart indefinitely causing it 500 internal server error. This can be a serious bug as customer will not able to shop if this happens. I noticed this happens when there is a shopping cart rule which have Category in conditions of the rule.
If total quantity equals or greater than 1 for a subselection of items in cart matching ALL of these conditions:
Category is 125
So for example you have a shopping cart rule where you want to give some discount or free product if at least one product is chosen from specific Category, this triggers the error in frontend shopping cart. Main reason here is Category condition. If you remove category condition then the error should go away. But if you want to keep the category condition and still want Magento to handle the shopping cart promotion rule, check the code changes below:
To solve this I copied below file to my local
app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Combine.php
and edited the function validate:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | /**
* Validate a condition with the checking of the child value
* @param Varien_Object $object
*
* @return bool
*/
public function validate(Varien_Object $object)
{
/** @var Mage_Catalog_Model_Product $product */
$product = $object->getProduct();
if (!($product instanceof Mage_Catalog_Model_Product)) {
$product = Mage::getModel('catalog/product')->load($object->getProductId());
}
$valid = parent::validate($object);
/* Kalpesh commented whole block, as it causes redirect loop and Segmentation fault in apache
if (!$valid && $product->getTypeId() == Mage_Catalog_Model_Product_Type_Configurable::TYPE_CODE) {
$children = $object->getChildren();
//$valid = $children && $this->validate($children[0]); //Kalpesh commented, issue....
}*/
return $valid;
} |
Hope this helps to some troubled souls!
13 Comments
Leave a comment
Welcome to my Blog
Certifications
Honor
Recognition
Contributions
Categories
- Apache (2)
- ChatGPT (1)
- Domain name (2)
- eCommerce (2)
- htaccess (1)
- Humor (3)
- Instagram API (1)
- jQuery (4)
- JSON (1)
- Linux (10)
- Magento (142)
- Magento admin (58)
- Magento Certification (5)
- Magento error (13)
- Magento frontend (68)
- Magento Imagine (2)
- Magento Interview (5)
- Magento Master (2)
- Magento2 (10)
- Mobile (1)
- MySQL (7)
- OpenAI (1)
- OroCRM (2)
- Performance (2)
- PHP (8)
- Prototype JS (3)
- Security (4)
- Wordpress (3)
- XML (2)
You saved my ass with this one!! Thank you kalpesh!!!
Hi,
Thank you for this fix, I spent a few hours trying to work out what was wrong before finding this post.
I have just discovered though, that by using this fix, it breaks the free shipping rule, have you come across this? I am using the WebShopApps ProductMatirx.
Cheers,
Tim
There is a patch for this
https://gist.github.com/piotrekkaminski/54529dadb0bc01a62a2d
It is marked for EE but the fix worked for us.
app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Subselect.php
- if (parent::validate($item)) {
+ if (Mage_Rule_Model_Condition_Combine::validate($item)) {
That worked for me on CE 1.9.2.0!
Thanks!!!!
This saved my time. Worked great.
Thanks For Posting.
Hi,
Thanks for taking the time to post this.
It worked on CE 1.9.2.1 🙂
Solution not working for Magento version 1.9.2.2. Specifically for “Confugurable” products. dont know its a magento default bug or some specially third party bug. we have install all the latest “SUPEE” patches aswell. Still issue persist.
Dude, took me hours of googling to finally find this answer. Fantastic solution, built off of that other solution by Phil on magentoexchange that didn’t quite work. My only question is by removing this block could this mess up validation or do any unintended consequences?
Thanks!
AFAIK I didn’t had any issue, but I would still recommend to do proper testing before making the change on production.
Hi kalpesh,
I need your help can you please check my website where when I click add to cart button its display 500 error.
Website link: https://www.originalswat.com/
Hi gautam. It’s impossible to know what the problem is without looking at the server error log. If using apache, it should be probably at /var/log/httpd/error_log or /var/log/apache2/error.log
Thank you. This helped us.
Hello,
I’m using magento 2.2.3 end I have an error while configuring a shopping Cart Price Rule.
I’m getting an error: HTTP ERROR 500
Error Log:
[2018-09-13 13:42:14] main.DEBUG: cache_invalidate: {“method”:”GET”,”url”:”https://wotoks.com/admin_1u2y0c/sales_rule/promo_quote/index/key/4665a9eda97686c991acbb14c5eb226e9b3c167e2b9ea1e03b3b893d555ec937/”,”invalidateInfo”:{“tags”:[“interception”,”CONFIG”],”mode”:”matchingTag”}} []
Thank you for your help