Fix Fatal Error: Class ‘Zend_Cache’ Not Found in Magento

classzend-framework

Does anyone know why this kind of messages appear? It seems like my Magento installation does not fully load all Zend classes, although they are there on a proper place with proper file permissions.

If I try removing the whole project and uploading it again, it happens again, only with different Zend class.

Does anyone know how to debug these kind of errors?


SOLVED: by clearing the APC cache on the server. For whatever the reason, it loaded the old instance of Magento in cache and only partially the new ones, therefore causing the buggy behaviour.

Thanks once again to Alan and mbalparda for their responses.

Best Answer

Magento's autoload should convert the class

Zend_Cache

into an include path of

Zend/Cache.php

and then look for that class in the following folders.

app/code/local/Zend/Cache.php
app/code/community/Zend/Cache.php
app/code/core/Zend/Cache.php
lib/Zend/Cache.php

In a standard install, it loads from lib/Zend/Cache.php. So, the first thing I'd do is make sure the lib/Zend/Cache.php is there, and there is not a file at the other locations. If there is a file at the other location(s), take a look inside and make sure a class named Zend_Cache is actually defined.

If the file's there, then it sounds like it's not being loaded correctly. The next debugging step I'd take is pinpointing the place in app/code/core/Mage/Core/Model/Cache.php where Magento's trying to use Zend_Cache, and make sure the PHP include paths have been setup correctly. Use some var_dump debugging like this.

    #File: app/code/core/Mage/Core/Model/Cache.php
    var_dump(explode(':',get_include_path()));
    exit;
    $this->_frontend = Zend_Cache::factory('Varien_Cache_Core', $backend['type'], $frontend, $backend['options'],
        true, true, true
    );

You should see output that looks something like this

array (size=6)
  0 => string '/path/to/magento/app/code/local' (length=61)
  1 => string '/path/to/magento/app/code/community' (length=65)
  2 => string '/path/to/magento/app/code/core' (length=60)
  3 => string '/path/to/magento/lib' (length=50)
  4 => string '.' (length=1)
  5 => string '/usr/local/php5/lib/php' (length=23)

If lib and the code pools (core, community, local) aren't in there, it meant you may be dealing with a modified app/Mage.php file, or you may be running in Magento compiled mode without having compiled classes (doubtful in your case since the error comes from app/code/core..., but you never know)

Finally, if the paths were setup correctly, I'd look at the autoloader and add some debugging.

#File: lib/Varien/Autoload.php
var_dump($class);
var_dump($classFile);

return include $classFile;

Look for the path the autoloader tries to create for Zend_Cache, and then figure out why it can't load the class.

Hope that helps!

Related Topic