I have an established Drupal 6.x site that has recently began giving me problems that I can not solve.

Known Symptoms:

  • drupal_mail() stopped functioning
  • Watchdog stopped functioning
  • Error when running update.php
    • warning: mb_language(): Unknown language "uni" in /path/site.com/includes/unicode.inc on line 72.

Story

Up until this point, everything had been functioning great. The first sign of trouble was when I noticed that notifications that use drupal_mail() in my custom module stopped working. I began troubleshooting using some well placed watchdog() functions and then noticed that the watchdog logs had stopped working on June 26th. No logs after that. I started troubleshooting and found that running update.php gives a warning message: (note: the only place I see this message is during an update - there are no other error or system messages anywhere)

warning: mb_language(): Unknown language "uni" in /path/site.com/includes/unicode.inc on line 72.

Searching for this error string and any directive produced no useful information. Inspecting the unicode.inc module didn't give me any clues either.

Troubleshooting Methods

  • Cleared cache
  • Rebuilt permissions
  • Disabled most modules
  • Disabled custom theme
  • Removed most modules
  • Reinstalled current Drupal version
  • Repaired DB tables
  • Restored DB to dates before watchdog logs stopped
  • Restored drupal/sites to dates before watchdog stopped
  • Upgraded Drupal to new version (Security release came out during troubleshooting
  • Tried everything and every combination that I could think of

I have spent two whole days on this and am not even one bit closer to figuring this out. If anybody has any more troubleshooting ideas or has any idea what the error message above means, please let me know.

Comments

3cwebdev’s picture

I discovered that if I comment out the line that was throwing the error from unicode.inc, that all errors go away, watchdog and everything else appear to be working correctly again.

  mb_language('uni');

The big questions are:

  • What does mb_language('uni') do?
  • What is causing it to throw an error when running update.php?
  • What is causing it to disable watchdog functionality?
  • Why does removing that line seem to fix everything?