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

Samuel Wolf samuel at sheepflock.de
Mon Nov 2 16:40:40 UTC 2015


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?

>
>
> -- 
> mike
> The Horde Project
> http://www.horde.org
> https://www.facebook.com/hordeproject
> https://www.twitter.com/hordeproject





More information about the kronolith mailing list