[kronolith] /usr/bin/kronolith-agenda Horde_Prefs_Scope::serialize() must return a string or NULL

Samuel Wolf samuel at sheepflock.de
Mon Nov 2 18:53:36 UTC 2015


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"; [...]

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.

>
>>
>> Kind of running out of ideas.
>>
>>
>> -- 
>> mike
>> The Horde Project
>> http://www.horde.org
>> https://www.facebook.com/hordeproject
>> https://www.twitter.com/hordeproject
>
>
>
> -- 
> 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