So we have a project which has two different database connections. After having read on the web for a bit I didn’t run into the ideal solution to inserting into a table which was not in the default database. It turned out to be pretty simple though:

So we stumbled onto this problem with a new customer who was using a module called Techtwo_Mailplus. When trying to make a rest connection HHVM would cause the following exception to be thrown: Invalid chunk size “” unable to read chunked body. This did not happen with their old server which ran bog standard PHP DSO. Now, I was not looking forward to debugging it because it’s a complex module and the error eventually ended up in Zend_Rest_Client after tracing it through 4 other files and multiple functions in those files. However, I stumbled onto this post which gave me the solution:

To fix the Techtwo_Mailplus module I edited app/code/community/Techtwo/Mailplus/Helper/Rest.php and around line 160 you will find:

This is the spot where you can add the fix from the Zend post. So just add it to the end of this part so it looks like this:

I don’t have time to figure out exactly why this happening but forcing HTTP version 1.0 seems to “walk a different path” in Zend Framework and doesn’t hit the part that causes the error.

During an import I managed to get the order wrong of the selectable attributes of some Magento Configurable products. So I had to change the sort order of the Magento configurable attributes. It took me a little while to figure out how to fix this but it as pretty easy actually. You can find the function below which will loop over all configurables and set a new position value if there are more than 1 attributes. It does not seem to matter if position is greater than the amount of attributes or if it skips a number.

I saw this error today while updating a shop to Magento while trying to re-index from the commandline using the indexer.php, turns out it was as easy to solve as just flushing the cache. In our case a redis-cli flushall but always make sure Magento didn’t spontaniously create a var/cache dir or even a dir in /tmp/, it likes to do that if your config is not rock solid.


Another version of Magento ( was released and this one promises some welcome fixes!

As always here’s a download link off my VPS which should be faster than the official download location:
md5sum: 79ca01aa9736a402e68ec34361222b96 magento-

The full release notes can be found here:

The most notable changes/fixes for me are:

  • Magento Community Edition 1.9.1 works with MySQL 5.6 and PHP 5.5
  • Improved product save performance with a large number of rule-based product relations.
  • Catalog price rule expiration dates are observed.
  • Improved indexing performance.
  • The Update on Save option works properly (reindexing is not required).

After importing lots of data into Magento I had problems reindexing. I had no experience with fixing indexing errors Magento before and digging through the EAV structure in MySQL is not something you look forward to. Turns out there was a pretty easy fix for this which basically makes sure that all the tables are actually linking to an existing product. If there is a link to a product that doesn’t exist (anymore) for some reason you can expect to see errors like:

It’s as easy as running the following SQL commands:

Original post where I found this:

Another nice little function I created during my import adventures where I had to add a simple to configurable product in Magento. I’m sure this will come in handy for someone..

Sometimes you’d just like to add an unpaid invoice to Magento order without it being set to paid status (Cash on Delivery anyone?). Once again I found a tutorial on Inchoo which described the biggest part of generating an invoice programmatically for an order, but it was always set to paid status. Well, I found the solution:

It’s mostly the line $invoice->setState() which I changed. And I switched to offline capturing, all other options are documented.

I was calling this function from an event observer but you could also just load an order using:

Like the title says, the cron was broken when using Aoe_Scheduler so I decided to write my own little script from Xtento’s own code.

I put this file in the shell directory and actually just call it with a crontab at 00:00 every day:

The contents of the export function could also just be placed in the contruct, and it might not necessarily need the secureArea and setCurrentStore but it’s the contstruct I always use and it works ;)