[kronolith] /usr/bin/kronolith-agenda Horde_Prefs_Scope::serialize() must return a string or NULL
Samuel Wolf
samuel at sheepflock.de
Tue Nov 3 09:56:49 UTC 2015
Zitat von Michael Menge <michael.menge at zdv.uni-tuebingen.de>:
> Quoting Samuel Wolf <samuel at sheepflock.de>:
>
>> Zitat von Samuel Wolf <samuel at sheepflock.de>:
>>
>>> Zitat von Michael J Rubinsky <mrubinsk at horde.org>:
>>>
>>>> Quoting Samuel Wolf <samuel at sheepflock.de>:
>>>>
>>>>> Zitat von Michael J Rubinsky <mrubinsk at horde.org>:
>>>>>
>>>>>> Quoting Samuel Wolf <samuel at sheepflock.de>:
>>>>>>
>>>>>>> Zitat von Michael J Rubinsky <mrubinsk at horde.org>:
>>>>>>>
>>>>>>>> Quoting Samuel Wolf <samuel at sheepflock.de>:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> does somebody has any idea whats wrong here?
>>>>>>>>>
>>>>>>>>> Samuel
>>>>>>>>>
>>>>>>>>> root at mailserver:~# php5 /usr/bin/kronolith-agenda
>>>>>>>>>
>>>>>>>>> ====================
>>>>>>>>>
>>>>>>>>> Fatal Error:
>>>>>>>>> Horde_Prefs_Scope::serialize() must return a string or NULL
>>>>>>>>> In /usr/share/php/Horde/Prefs/Cache/HordeCache.php on line 62
>>>>>>>>>
>>>>>>>>> 1. send_agendas() /usr/bin/kronolith-agenda:22
>>>>>>>>> 2. Horde_Prefs->getValue() /usr/bin/kronolith-agenda:100
>>>>>>>>> 3. Horde_Prefs->_getScope() /usr/share/php/Horde/Prefs.php:250
>>>>>>>>> 4. Horde_Prefs->_loadScope() /usr/share/php/Horde/Prefs.php:348
>>>>>>>>> 5. Horde_Prefs_Cache_HordeCache->store()
>>>>>>>>> /usr/share/php/Horde/Prefs.php:418
>>>>>>>>> 6. serialize() /usr/share/php/Horde/Prefs/Cache/HordeCache.php:62
>>>>>>>>
>>>>>>>>
>>>>>>>> Looks like the serialization fails for some reason, and since
>>>>>>>> json_encode() returns FALSE for this it throws a fatal error
>>>>>>>> since the serialize interface must return a string or NULL.
>>>>>>>> *WHY* it's failing, I'm not sure off hand - I'll have to look
>>>>>>>> into it. At the very least, we need to catch the false value
>>>>>>>> and change it to null.
>>>>>>>
>>>>>>> It is not a general problem, the script work on my home horde
>>>>>>> server without a error.
>>>>>>> Idea to debug this?
>>>>>>>
>>>>>>> I am sure this script work in the past without the error, but
>>>>>>> have no idea which change/update broke it...
>>>>>>
>>>>>> Basically, the only thing I know for sure is that json_decode()
>>>>>> is returning false in that method. I would need to see the data
>>>>>> that it is attempting to serialize to know *why* it is failing.
>>>>>> My guess is that it's some non UTF-8 data (which as of PHP 5.5
>>>>>> causes json_decode to fail whereas before this, it would only
>>>>>> null out the offending string).
>>>>>>
>>>>>> If you want to spend time on this, you can insert something like:
>>>>>>
>>>>>> Horde::debug(array($this->scope, $this->_prefs));
>>>>>>
>>>>>> into Horde_Prefs_Scope::serialize() and see what the values are
>>>>>> when this fails.
>>>>>
>>>>> I add the debug code in /usr/share/php/Horde/Pres/Scope.php
>>>>>
>>>>> public function serialize()
>>>>> {
>>>>> Horde::debug(array($this->scope, $this->_prefs));
>>>>> return json_encode(array(
>>>>> $this->scope,
>>>>> $this->_prefs
>>>>> ));
>>>>> }
>>>>>
>>>>> This produce a long debug log file, but I can not see a problem
>>>>> there. Something I can grep for?
>>>>
>>>> Was hoping there would be something obvious there in the data.
>>>> So, you got the error, but the data looked normal-ish? Maybe try
>>>> a Horde::debug(json_encode(array($this->scope, $this->_prefs)));
>>>> just to be sure the json_encode is failing on the call that you
>>>> are dumping...
>>>
>>> [...]
>>>
>>> Backtrace:
>>> 1. send_agendas() /usr/bin/kronolith-agenda:22
>>> 2. Horde_Prefs->getValue() /usr/bin/kronolith-agenda:85
>>> 3. Horde_Prefs->_getScope() /usr/share/php/Horde/Prefs.php:250
>>> 4. Horde_Prefs->_loadScope() /usr/share/php/Horde/Prefs.php:343
>>> 5. Horde_Prefs_Cache_HordeCache->store() /usr/share/php/Horde/Prefs.php:418
>>> 6. serialize() /usr/share/php/Horde/Prefs/Cache/HordeCache.php:62
>>> 7. Horde_Prefs_Scope->serialize()
>>> 8. Horde::debug() /usr/share/php/Horde/Prefs/Scope.php:311
>>>
>>> 2015-11-02T19:32:15+01:00 DEBUG: Variable information:
>>> bool(false)
>>>
>>> Backtrace:
>>> 1. send_agendas() /usr/bin/kronolith-agenda:22
>>> 2. Horde_Prefs->getValue() /usr/bin/kronolith-agenda:100
>>> 3. Horde_Prefs->_getScope() /usr/share/php/Horde/Prefs.php:250
>>> 4. Horde_Prefs->_loadScope() /usr/share/php/Horde/Prefs.php:348
>>> 5. Horde_Prefs_Cache_HordeCache->store() /usr/share/php/Horde/Prefs.php:418
>>> 6. serialize() /usr/share/php/Horde/Prefs/Cache/HordeCache.php:62
>>> 7. Horde_Prefs_Scope->serialize()
>>> 8. Horde::debug() /usr/share/php/Horde/Prefs/Scope.php:311
>>>
>>> -----------------------------------------------------------------------
>>>
>>> It Should be "Standardidentität", is this the problem?
>>>
>>> [...] a:13:{s:2:"id";s:17:"Standardidentit<E4>t";s:8:"fullname"; [...]
>>
>
> It seems your datas is encoded in ISO-8859-1 or an other ISO-8859 charsets.
> "ä" is charackter 228 = 0xE4 in ISO-8859-1. In UTF-8 0xE4 the begin
> of a 3 byte character
> but not all byte esquences are valid.
>
> ä is a 2 byte character (0xC3A4) in UTF-8. If you convert the date
> to UTF-8 you have to
> adjust the string length (the number behind the s:) to the correct
> string length in bytes
Mhm the most tables are in utf8_general_ci, but horde_prefs is in
latin1_swedish_ci.
No idea why.
>
>
>
>> This was the problem, the profile was from an old user which never
>> login the past few years.
>> After delete his settings in horde_prefs, the problem gone.
>>
>
>
> --------------------------------------------------------------------------------
> M.Menge Tel.: (49) 7071/29-70316
> Universität Tübingen Fax.: (49) 7071/29-5912
> Zentrum für Datenverarbeitung mail:
> michael.menge at zdv.uni-tuebingen.de
> Wächterstraße 76
> 72074 Tübingen
>
> --
> kronolith mailing list
> Frequently Asked Questions: http://wiki.horde.org/FAQ
> To unsubscribe, mail: kronolith-unsubscribe at lists.horde.org
More information about the kronolith
mailing list