Unable to read language directory

Bug #1067724 reported by Jan Korous on 2012-10-17
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Aaron Wells
Aaron Wells

Bug Description

Running Mahara 1.5 here. No relation to system or PHP version I guess.

On page:
I get this error:
   Unable to read language directory lang [full log appended but not necessary]
which is because in lib/mahara.php on line 596 (+/- 5 lines)
    $datarootpaths = (array)glob(get_config('dataroot') . 'langpacks/*', GLOB_MARK | GLOB_ONLYDIR);
assign array(0 => false) to $datarootpaths

My 3 line patch goes directly below that line and looks like this:
   foreach($datarootpaths as $key => $path)

*** full error log ***
Call stack (most recent first):
log_message("Unable to read language directory lang/", 8, true, true) at /srv/http/mahara/testing/mahara_code/lib/errors.php:109
log_warn("Unable to read language directory lang/") at /srv/http/mahara/testing/mahara_code/lib/mahara.php:564
get_languages() at /srv/http/mahara/testing/mahara_code/lib/web.php:3346
language_select_form() at /srv/http/mahara/testing/mahara_code/lib/web.php:437
smarty(array(size 0), array(size 0), array(size 0), array(size 2)) at /srv/http/mahara/testing/mahara_code/auth/lib.php:1009
auth_draw_login_page(null, object(Pieform)) at /srv/http/mahara/testing/mahara_code/auth/lib.php:516
auth_setup() at /srv/http/mahara/testing/mahara_code/init.php:291
require("/srv/http/mahara/testing/mahara_code/init.php") at /srv/http/mahara/testing/mahara_code/admin/users/pendingregistrations.php:30

Hugh Davenport (hugh-davenport) wrote :

Hi Jan,

If you would like, you can submit this patch to our review system. See https://wiki.mahara.org/index.php/Developer_Area/Contributing_Code#Submitting_commits_for_review

Or, if you prefer, one of our developers can do it on your behalf.



Changed in mahara:
status: New → Triaged
importance: Undecided → Low
milestone: none → 1.7.0
Jan Korous (koja) wrote :

My solution is just a hotfix which saves the day but doesn't take care of the primary reason for this issue.

Please let someone check it.

Aaron Wells (u-aaronw) on 2013-04-19
Changed in mahara:
milestone: 1.7.0 → 1.8.0
Aaron Wells (u-aaronw) on 2013-09-30
Changed in mahara:
milestone: 1.8rc1 → 1.8.0
Aaron Wells (u-aaronw) wrote :

I was unable to replicate the error in 1.5_STABLE. From looking at the glob() documentation ( http://php.net/glob ) I note that the glob function is meant to just return an empty array if it can't find anything, or false on error. So, it's possible that some environments may be causing glob to error out, and the code isn't handling that properly.

There's also this: "Note: On some systems it is impossible to distinguish between empty match and an error. "

It's unclear whether that means that an empty match returns false, or whether it means that an error returns an empty array. But the return value that Jan noted (nearly 1 year ago today) is what you get when you cast boolean false as an array:

var_dump((array) false);

 array(1) {

Changed in mahara:
status: Triaged → Incomplete
status: Incomplete → Triaged
milestone: 1.8.0 → 1.8.1
Aaron Wells (u-aaronw) wrote :

Okay, here's a patch that will provide a warning message that makes more sense. We should still probably be printing a warning message, because if glob() returns false, that indicates an error condition.


Changed in mahara:
milestone: 1.8.1 → 1.8.2

Reviewed: https://reviews.mahara.org/3099
Committed: http://gitorious.org/mahara/mahara/commit/661a79dc06def9a9222ed0550711c12e58fbf948
Submitter: Aaron Wells (<email address hidden>)
Branch: 1.8_STABLE

commit 661a79dc06def9a9222ed0550711c12e58fbf948
Author: Aaron Wells <email address hidden>
Date: Mon Dec 16 15:06:20 2013 +1300

More robust handling of lang directory search problems

Bug 1067724

Change-Id: Ie3f6b1136307e4c715929e94d6892e43636c7baf

Robert Lyon (robertl-9) on 2014-04-22
Changed in mahara:
status: Fix Committed → Fix Released
no longer affects: mahara/1.9
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers