Whether you are a Drupal newcomer or a seasoned Drupal ninja, you’re bound to run into one, some, or all of the issues outlined below. Some are obvious, some not so obvious, but I’ll show you how to troubleshoot them all regardless.
Some of these issues took a while to troubleshoot, so if you use Drupal as much as we do, make sure you bookmark this page for easy reference in the future. There is nothing worse than spending hours on a problem that can be solved within minutes with the right information (we’ve all been there).
1. Users with ‘edit page content’ access cannot edit simple pages
Chances are the nodes that the users are trying to edit have an input format that they’re not permitted to use. Try this:
- Check the input format for the body field. If its “Full HTML” or “PHP Code” for example, and that user role cannot create content of that input type, they won’t even see an edit tab for that node. Either change the input format to one they can access, or grant access to that input format at: “admin/settings/filters”
- Double check that their role has permission to edit that particular node type at “admin/user/permissions”
2. My client cannot see content he/she has created after logging out
This is likely a caching issue. They can see the content when they are logged in because some caching instances are based on user roles. Check the following:
- Clear cached data at “admin/settings/performance”
- Clear your browser’s cache
- Adjust the “Minimum Cache lifetime” setting also under “admin/settings/performance”
3. Images within posts are disappearing after publishing the node
This is likely related to the “Input Format” (again). If the node is using the default settings, “Filtered HTML”, input format tags such as img, object, script, etc. will be stripped out. Try the following:
- Grant the role in question access to the “Full HTML” input format
- Create a custom Input Format that includes the tags you want
4. My theme (CSS/template) changes aren’t showing up
- Is CSS caching turned on? If so, turn it off while your theme is still under development. You can do so at “admin/settings/performance”
- If that still doesn’t work, try clearing your browser’s cache
If you’re using Drupal 6, you may also need to clear out the theme registry if you have added new theme functions or new templates. While you’re at admin/settings/performance, you can hit the “Clear cached data” button. Check out a full write-up about the new theme registry. (Thanks Steven Merrill!)
5. I’ve lost all my anonymous user content! (comments)
When was the last time you imported/exported your database? This issue seems to happen when MySQL creates the user’s table from a batch file (or database transfer via Navicat) – the user id from the table is auto-incremented and the required ‘0’ value is replaced. Try the following:
- Manually reset the uid value for the anonymous visitors in the users table. More info found here at Drupal.org
6. I’m getting the dreaded white screen of death!
There are many possible causes for this: PHP error reporting settings, memory exhaustion, etc. Try the following:
- Read this article on Drupal.org
7. My web pages take forever to load. What’s the deal?
Obviously, there could be many factors at play with this one. Try using the caching capabilities of Drupal. Caching can drastically improve the load times. Especially compressing CSS and JavaScript files – this will help reduce the number of header requests.
8. It’s a pain to try and develop a theme starting with Garland. Isn’t there a better way to theme from scratch?
Yes, there is. Install the Zen theme starter kit. Zen makes it easy to theme from scratch, and best of all, Zen is a standards-compliant theme.
9. My blog gets hit with a ton of spam, what can I do?
1 word: Mollom; install the Mollom spam module, configure it, and you’ll forget that spam ever existed. Mollom has a free and a paid version – the free will be sufficient for most sites and it even includes some impressive statistics reporting.
10. How can I figure out which theme function (or template file) I need to override in different places?
Install the Devel module. The Devel module was created specifically for Drupal developers. It will streamline your Drupal development process by showing you which functions/templates were used to render parts of the page.
11. My layout looks “broken” all of the sudden, what happened?
This may be a CSS issue, it may be a caching issue, or it may be something else. Try emptying the cache (admin/settings/performance) or try rebuilding the theme registry. Side note: you can easily empty Drupal’s cache and rebuild the theme registry using the menu provided by the Devel module mentioned above.
12. CSS images disappear when caching CSS caching is turned on
There are a number of potential causes for this:
- Check the permissions to the files and CSS folders at (sites/default and sites/default/files/css respectively) – the server needs read and write access
- Is your CSS file importing another with @import? This could be breaking things. Try embedding the imported CSS directly
- Are you using relative or absolute paths? There seems to be an issue with this as well
- Do you have any funny characters in your URL? While working on a local version of one our sites, we had parenthesis in a directory name; this was breaking the link
- Check this article for some more information
13. My custom URL alias keeps being overridden!
If you have the Pathauto module installed, it might be overriding your custom URL. To fix this, uncheck “Automatic URL Alias” under the URL alias fieldset – this will allow you to use your custom URL in conjunction with the Pathauto module. Also, there is a patch that apparently fixes this issue – though we have yet to test this.
14. Users cannot view/edit custom CCK field(s)
Do you have the “Content Permissions” helper module enabled that comes packaged with CCK? If so, check the field permissions for that user role. By default, only users with administer CCK privileges can edit/view each field.
15. A specific Drupal user isn’t able to perform a necessary task (such as editing a specific content type)
Double check the permissions for the user’s Role(s); they probably don’t have sufficient privileges to carry out the task.
Did we miss anything?
If you have any Drupal bugs or problems which you feel may be common, leave a comment below and we’ll add it to the list.


4. My theme (CSS/template) changes aren’t showing up
If you’re using Drupal 6, you may also need to clear out the theme registry if you have added new theme functions or new templates.
While you’re at admin/settings/performance, you can hit the “Clear cached data” button. Check out a full write-up about the new theme registry here: http://drupal.org/node/173880#theme-registry .
Thanks for the tip, Steven. I added your information to the post, giving you credit.
A common beginner’s mistake when you start your own theme is forgetting the $closure tag in your page.tpl.php. Some modules – like google maps integration – use this for javascripts which need to be executed at the end of the page and won’t work if you omit the tag.
Also – a bit more advanced – when building multilingual sites, make sure your menus are rendered through regions. Do not embed them directly using $primary_links if you don’t like unexpected results
Thanks for the comments Albert. These are both good points, for both beginners and seasoned pros. Thanks again!
WRT to #9, I think the service is actually named “Mollom”.
Nice article, thanks!
I recently experienced a scary problem regarding changing theme configuration (Garland).
Depending on the filesystem setup (permissions), users set up (umask), and PHP configuration, the changes cannot be saved and the sites loses all format.
The quickest solution is to disable the safe mode in php.ini (and in every related configuration, including Apache files). I have seen may appearances of this error googling, but not so many properly answered.
Great article, think I’ve come across most myself. The input format one drove me mad for hours!
Well I’m still very much a novice but here are the problems that have been (or continue to be) the biggest headaches.
1. Breadcrumbs: After using 1/2 a dozen modules (names withheld to protect the guilty) alone or in combination with one another, I’m still unable to achieve 100% of what I want without writing my own PHP code. What’s frustrating is that I don’t want anything special at all. I just want the breadcrumb to match the URL.
ex. http://crummybread.me/Content-type/Nodetitle HOME >> Content-type >> Node-title
2. Content access: This one is so simple I’m amazed I can’t do it with the core modules. All I want to do is choose which content types a particular role can view. To make it even simpler, I need anonymous users to not be able to view certain content types. Once again, after trying several popular modules including Content Access, I seem unable to preveny anonymous users from viewing content.
3. Region GUI: It would be extremely helpful to have a GUI — possibly right on the Blocks page — to add a new region. Admitedly, this was not that hard to figure out once I opened the various files in the themes, but for a newcomer, this would have helped the learning curve.
4. Poor or Missing Module Documentation: First you really don’t what the module does until you install it and try it. At least give me a screenshot. After you install it, you still don’t know what it does and you have to search the menus to find where to make it work (some are under build, other under settings, other create their own directory). I’ve wasted countless hours installing and configuring modules only to say, “oh, that’s what it does” and uninstalling it.
5. Taxonomy Setup: So after you finally figure out what kind of animal it is, you begin creating categories and terms and then you have no idea what the related terms or synonyms are for. This goes back to #4, I mean a core module should at least described what each item does.
Most other things I’ve been able to figure out within a reasonable amount of time. For example, I have successfully setup the following:
*a dev, test and prod site all working off the same installation (in my case with 3 separate dbs but could have easily been 1 db with table prefixes).
*CCK to extend content types with images, attachments, etc.
*Views and Views slideshow to show recent content on the front page (in the sidebar) and on other selected pages
*Autopath Aliasing and Tokens
*Imagecache (almost getting frustrated with this but I don’t think it’s a beginner module anyway)
Still trying to figure out but not frustrated yet because I’m making headway
*Domain module for multiple domains sharing content (distinct from my environmental separation)
*Organic Groups
*Ubercart
*GMap and Locations
*Panels (just installed today)
Thanks for your comment Benjamin – I agree on many fronts. Without going into too much detail on your “Conent Access” problems, have you tried using the permissions settings. You can definitely allow/deny users (by roles) to create/edit/view/delete different content types at a pretty granular level. Perhaps you’re looking for a different type of functionality. Happy Drupaling!
Hi Benjamin,
Re: #2, content access, I’ve been using TAC Lite (Taxonomy Access Control Lite) to handle this, and it works very well. For instance, on my site, non-logged in users have no access to forums, so I use TAC Lite in combination with String Override to display a message that lets them know they need to login to access forums.
BTW Chris, I’m very impressed with this site’s forum structure and comment forms. Nice work, especially with the collapsible “Comment Rules” tab! This page solved the content editing filter issue for me instantly, when I too was scratching my head about it. Thank you.
@jrdixey
7. My web pages take forever to load. What’s the deal?
Installing a PHP accelerator can be helpful especially if you have lots of modules. It can divide by 2 the time needed to generate the page.
http://en.wikipedia.org/wiki/PHP_accelerator
For some reason, my homepage won’t change! I just want to add some content to it and have it automatically show new blog/story posts. But it remains static even after having items published to it…
I had a site that was showing double entries of all content in all views and image galleries, but only for certain user groups when using Taxonomy Access Control. I tried using distinct in views, but nothing seemed to fix it.
Eventually I switched from Taxonomy Access Control to TAC Lite as mentioned by jrdixey above, and now everything’s working perfectly.
Thanks jrdixey!