You are here

Upgraded to Drupal 7

Posted at 17:46 on Sat, 19th March 2011 in drupal.

Detailed technical notes and tips for developers and system admins, upgrading a Drupal 6.x site to 7.0.

If you're wanting to upgrade a Drupal site from version 6.x to 7.0, you should be reading the official handbook page, here:

I've just finished upgrading this site and thought I'd share a few thoughts and issues I came across.

If you're looking for some tips on upgrading earlier versions of Drupal, see my previous posts: Upgrading a Drupal 4.7.x site to 5.x and Upgrade Drupal from 5.x to 6.x.

Anyway, comments/tips/issues for drupal 7.x upgrade:

  • Before upgrading, delete any 3rd party modules you don't have enabled - why waste time on updating them if you don't use them - cross that bridge in the future if and when you decide to use them again on your site.
  • Perform the upgrade on another website address, so you can compare sites, and get things right before making the 7.x version live. Once you've got the process working, then perform it on your live site. As I'm in control of my sites content, I just made sure I didn't add any content (and no one comments anyay) to the old 6.x site, and simply replaced it with the 7.x version when I was ready - but not everyone has that option.
  • If you're using a shared hosting service (like Jumba, as I was) and you have a php.ini file in the document root (for say, setting PHP's memory_limit), and you see the error: "Fatal error: Class 'PDO' not found in <document-root>/includes/database/ on line 185", there's a quick fix for this, which worked fine for me:
  • After the upgrade, if you start seeing errors like "Undefined index: 3 in filter_list_format() (line 675 of /.../modules/filter/filter.module", check out this patch, which seems to fix it:
  • After the upgrade, if you're seeing weird warning messages like "Notice: unserialize() [function.unserialize]: Error at offset 74 of 75 bytes in variable_initialize() (line 749 of /srv/www/<sitename>/includes/", then you may have a bad row in your variable table. Use the variablecheck module to detect which variables are bad, and then delete them out of the variable table. More information on this here:
  • For the 3rd party modules you use, make sure you read the relevant modules project page on, or check out the issue queue for any tips for uprading. Sometimes, you might not need to install the module at all, because its been moved into Drupal core already, for example, for this site, I no longer needed any of these: auto_menutitle, vertical_tabs, cck, ctm, imagecache nor better_formats.
  • When you start going through and installing your 3rd prty modules, remember to run update.php after each module install. I incorrectly assumed that when these modules are re-enabled, that the DB updates would be run. Consequently I was seeing errors like "PDOException: SQLSTATE[42S22]: Column not found" everytime I updated a view. A quick run of the update.php fixed this immediately. Discussed here:
  • If you used the admin_menu module on your Drupal 6.x site, you may find after performing the upgrade, that you no longer have access to any administrator functions. Instead, every admin page gives you the message "You do not have any administrative items". To fix this, check out this fix: - Tip: if you need a way to install the devel module, use: UPDATE `system` SET `status` = '1' WHERE `system`.`filename` LIKE '%devel/devel.module';
  • If you like admin_menu in drupal 6, it has a cool feature in drupal 7.0 to enhance the existing toolbar that comes included in Drupal 7.0 - use it! it rocks. Then disable toolbar, so you don't have two toolbars!
  • If you see the warning message "Warning: array_flip() [function.array-flip]: Can only flip STRING and INTEGER values! in DrupalDefaultEntityController->load() (line 178 of /home/*/public_html/includes/" - its a page_title module bug, patch here:

There's still a few things to fix on this site relating to 3rd party modules:

  • Emfield module doesn't have a 7.x release yet, but they suggest using the media module instead - so I've got to figure out. For now, all embedded youtube videos will just display a link to it.
  • Tagedelic module doesn't have a 7.x release yet, and I haven't had a chance to find a replacement module for it. So no tag cloud on here for now!
  • Geshifilter module settings aren't all set right yet, i.e. no syntax highlighting for SQL stuff. PHP seems to be working ok though.

One of the things I changed after upgrading to Drupal 7.x was the way commenting works. I'm now running the the disqus module to replace commenting, which has some really neat features for letting people post via Twitter, etc. If you want to do this too - Beware: make sure you intall Disqus on your Drupal 6.x site first, and perform the comment export function (copies normal drupal comments into Disqus) - reason is, it seems this feature hasn't been written for the 7.x version of disqus yet.

That's it for now. I'm sure I'll come across more issues, as we do upgrades at work over the coming 6-12 months, so I'll post back any new or important ones then.

Otherwise, Adios, and good luck with your upgrades!