[dev] Horde 4 - Setlocale Error

B.Baransel BAĞCI bagcib at itu.edu.tr
Sun Mar 18 15:27:05 UTC 2012


Hi,

 

When i try horde 4 & imp 5 i have an error about "setlocale" function in
/usr/share/pear/Horde/Text/Filter/Csstidy/class.csstidy.php :823

 

In horde log:

 

==> /var/log/horde.log <==

2012-03-18T15:57:01+02:00 WARN: HORDE [imp] PHP ERROR: setlocale():
Specified locale name is too long [pid 14060 on line 823 of
"/usr/share/pear/Horde/Text/Filter/Csstidy/class.csstidy.php"]

 

 

The problem is sourced from parse function in class.csstidy.php. The
function :

 

==> /usr/share/pear/Horde/Text/Filter/Csstidy/class.csstidy.php <==

440:       function parse($string) {
441:                       $old = setlocale(LC_ALL, 0);        -> save
system locale information to $old variable as string.

442:                       setlocale(LC_ALL, 'C');                   -> set
system locale type to C 

//some operations...

818:                       setlocale(LC_ALL, $old);               -> set
saved locale information again.

819:

820:                                       return !(empty($this->css) &&
empty($this->import) && empty($this->charset) && empty($this->tokens) &&
empty($this->namespace));

821:                       }

 

 

My setlocale(LC_ALL,0) is returned this :

 

LC_CTYPE=en_US.UTF8;LC_NUMERIC=en_GB.UTF-8;LC_TIME=en_GB.UTF-8;LC_COLLATE=en
_GB.UTF-8;LC_MONETARY=en_GB.UTF-8;LC_MESSAGES=en_GB.UTF-8;LC_PAPER=en_GB.UTF
-8;LC_NAME=en_GB.UTF-8;LC_ADDRESS=en_GB.UTF-8;LC_TELEPHONE=en_GB.UTF-8;LC_ME
ASUREMENT=en_GB.UTF-8;LC_IDENTIFICATION=en_GB.UTF-8

 

 

I think string is too long, so i tried this code instead of
"setlocale(LC_ALL, $old)" on line 818.

 

foreach (explode(";", $old) as $tmp_LC_Part) {

  if (strpos($tmp_LC_Part, "=") !== false) {

    list ($category, $locale) = explode("=", $tmp_LC_Part);

  }

  else {

    $category = LC_ALL;

    $locale   = $tmp_LC_Part;

  }

  setlocale($category, $locale);

}

 

 

 

But this time I get this error(s):

 

==> /var/log/horde.log <==

2012-03-18T17:09:35+02:00 WARN: HORDE [imp] PHP ERROR: setlocale(): Invalid
locale category name LC_PAPER, must be one of LC_ALL, LC_COLLATE, LC_CTYPE,
LC_MONETARY, LC_NUMERIC, or LC_TIME [pid 14865 on line 827 of
"/usr/share/pear/Horde/Text/Filter/Csstidy/class.csstidy.php"]

2012-03-18T17:09:35+02:00 WARN: HORDE [imp] PHP ERROR: setlocale(): Invalid
locale category name LC_NAME, must be one of LC_ALL, LC_COLLATE, LC_CTYPE,
LC_MONETARY, LC_NUMERIC, or LC_TIME [pid 14865 on line 827 of
"/usr/share/pear/Horde/Text/Filter/Csstidy/class.csstidy.php"]

2012-03-18T17:09:35+02:00 WARN: HORDE [imp] PHP ERROR: setlocale(): Invalid
locale category name LC_ADDRESS, must be one of LC_ALL, LC_COLLATE,
LC_CTYPE, LC_MONETARY, LC_NUMERIC, or LC_TIME [pid 14865 on line 827 of
"/usr/share/pear/Horde/Text/Filter/Csstidy/class.csstidy.php"]

2012-03-18T17:09:35+02:00 WARN: HORDE [imp] PHP ERROR: setlocale(): Invalid
locale category name LC_TELEPHONE, must be one of LC_ALL, LC_COLLATE,
LC_CTYPE, LC_MONETARY, LC_NUMERIC, or LC_TIME [pid 14865 on line 827 of
"/usr/share/pear/Horde/Text/Filter/Csstidy/class.csstidy.php"]

2012-03-18T17:09:35+02:00 WARN: HORDE [imp] PHP ERROR: setlocale(): Invalid
locale category name LC_MEASUREMENT, must be one of LC_ALL, LC_COLLATE,
LC_CTYPE, LC_MONETARY, LC_NUMERIC, or LC_TIME [pid 14865 on line 827 of
"/usr/share/pear/Horde/Text/Filter/Csstidy/class.csstidy.php"]

2012-03-18T17:09:35+02:00 WARN: HORDE [imp] PHP ERROR: setlocale(): Invalid
locale category name LC_IDENTIFICATION, must be one of LC_ALL, LC_COLLATE,
LC_CTYPE, LC_MONETARY, LC_NUMERIC, or LC_TIME [pid 14865 on line 827 of
"/usr/share/pear/Horde/Text/Filter/Csstidy/class.csstidy.php"]

 

 

Some of properties didn't accepted. I tried some of languages english
(gb,us) or anothers. Problem is same. I'm running Horde 4.0.13 on PHP 5.3.3
with Apache 2.2.15 on RHEL 6.

 

---

Regards.

B.Baransel BAĞCI

Istanbul Technical University



More information about the dev mailing list