While attempting to clone and migrate a site which used ctools and panels with aegir I ran into a problem with the ctools cache of plugin filenames. I was able to reproduce this outside of aegir by moving a site from /sites/foo.test.com to /sites/bar.test.com. This resulted in a fatal PHP error when trying to load index.php because ctools tried to include /sites/foo.test.com/modules/ctools/plugins/content_types/vocabulary_context/vocabulary_terms.inc, which no longer existed. To fix the problem it would have been necessary to bootstrap the site in order to clear the ctools_plugin_files cache, but first the module paths in the system table needed to be updated. I'm used to doing this by loading /admin/build/modules after moving a site (or, equivalently, by running "drush sm") but this wasn't possible due to the same fatal PHP error.

I was able to work around this by moving the module to /sites/all, but I believe it should be possible to move sites and have them be able to bootstrap far enough to clear the cache and update the system table. One solution would be to change the call to require_once() in ctools_plugin_load_includes() to include_once() and then display an error message in the event that the file is not found.

Comments

merlinofchaos’s picture

Status: Active » Fixed

I've gone ahead and made the change.

However, visiting the modules page should have automatically cleared that cache -- something that should also be necessary when moving a site from one to another, since the modules page is where module file locations are recalculated. That said, there was a bug in the code checking the modules page, so I fixed that too.

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.