Virtuemart shop does not like APC: Internal Zend error - Missing class info

Written by - 0 comments

Published on - Listed in PHP


Virtuemart is an e-commerce (online shop) solution which can be used as an extension in Joomla. After some research today I found out that Virtuemart really doesn't like APC (Alternative PHP Cache).

The php-fpm log showed the following errors:

[26-Sep-2013 09:55:52] WARNING: [pool mywebhost] child 48864 said into stderr: "zend_mm_heap corrupted"
[26-Sep-2013 09:55:52] WARNING: [pool mywebhost] child 48864 exited with code 1 after 4938.339129 seconds from start
[26-Sep-2013 09:55:52] NOTICE: [pool mywebhost] child 51756 started
[26-Sep-2013 09:56:50] WARNING: [pool mywebhost] child 70607 said into stderr: "zend_mm_heap corrupted"
[26-Sep-2013 09:56:50] WARNING: [pool mywebhost] child 70607 exited with code 1 after 24946.369748 seconds from start
[26-Sep-2013 09:56:50] NOTICE: [pool mywebhost] child 51769 started

Unfortunately these warnings didn't really show what the issue was. A research for "zend_mm_heap corrupted" showed way too many possibilities of issues (bug in old PHP version, suhosin related issues, problem with output_buffer value, ...), so I activated the error logging of this host and soon found the relevant entries like this:

Fatal error: Internal Zend error - Missing class information for in /home/mywebhost/htdocs/administrator/components/com_virtuemart/version.php on line 30

At least this was much more revealing. By looking for this Zend error, I came across this page, which in general has nothing to do with Virtuemart, but the exact same error message there was explained as being triggered by APC.

As soon as I disabled the APC cache for this particular web host, the errors disappeared and the shop was running as it should.

Here's the relevant php-fpm config entry to disable APC cache:

 php_flag[apc.cache_by_default] = off

 


Add a comment

Show form to leave a comment

Comments (newest first)

No comments yet.