[imp] Cannot write Autoloader cache to backend.

Jens Grüntjes jens.gruentjes at ebira.de
Thu Apr 16 12:28:28 UTC 2015


Zitat von Jens Grüntjes <jens.gruentjes at ebira.de>:

> Zitat von Jan Schneider <jan at horde.org>:
>
>> Zitat von Jens Grüntjes <jens.gruentjes at ebira.de>:
>>
>>> Zitat von Michael M Slusarz <slusarz at horde.org>:
>>>
>>>> Quoting Samuel Wolf <samuel at sheepflock.de>:
>>>>
>>>>> Zitat von Michael M Slusarz <slusarz at horde.org>:
>>>>>
>>>>>> Quoting Samuel Wolf <samuel at sheepflock.de>:
>>>>>>
>>>>>>> Zitat von Michael M Slusarz <slusarz at horde.org>:
>>>>>>>
>>>>>>>> Quoting Samuel Wolf <samuel at sheepflock.de>:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I have a lot of this errors in my apache error log:
>>>>>>>>> [Wed Jun 11 23:01:24 2014] [error] [client 192.168.55.104]  
>>>>>>>>> Cannot write Autoloader cache to backend., referer:  
>>>>>>>>> https://192.168.55.45/horde4/imp/dynamic.php?page=mailbox
>>>>>>>>
>>>>>>>> Your webserver does not have access to the system temporary  
>>>>>>>> directory (directory returned by PHP's sys_get_temp_dir()).
>>>>>>>
>>>>>>> <?php
>>>>>>> echo sys_get_temp_dir();
>>>>>>> ?>
>>>>>>>
>>>>>>> show /tmp
>>>>>>>
>>>>>>> Webserver write some other files to /tmp:
>>>>>>> root at wds:/tmp# ls -la | grep horde
>>>>>>> drwx------  3 www-data www-data    4096 Jun  1 18:00 .horde
>>>>>>> -rw-r--r--  1 www-data www-data   13207 Jun  5 00:48  
>>>>>>> horde_autoloader_cache_a5242318
>>>>>>> -rw-r--r--  1 www-data www-data    7895 Jun  5 00:47  
>>>>>>> horde_autoloader_cache_ff86a2d4
>>>>>>
>>>>>> The last access is dated June 5.  I would guess something has  
>>>>>> changed on your server since then.
>>>>>
>>>>> You're right, thanks for the note!
>>>>>
>>>>> I installed at this time php5-xcache, after remove the package  
>>>>> again and restart apache:
>>>>> root at wds:/tmp# ls -la | grep horde
>>>>> -rw-r--r--  1 www-data www-data 28698 Jun 12 00:20  
>>>>> horde_autoloader_cache_a5242318
>>>>> -rw-r--r--  1 www-data www-data 47365 Jun 12 00:22  
>>>>> horde_autoloader_cache_ff86a2d4
>>>>> -rw-------  1 www-data www-data 18924 Jun 12 00:20 horde_debug.txt
>>>>> -rw-r--r--  1 www-data www-data     0 Jun 12 00:07 horde_dns.cache
>>>>> [...]
>>>>>
>>>>> crazy.
>>>>>
>>>>> Maybe I setup xcache wrong.
>>>>
>>>> Install != activate in PHP.  I'm guessing that's your issue.
>>>>
>>> Sorry for re-opening this issue. Today I switched from APC to  
>>> XCache and get these messages as well.
>>>
>>> <?php
>>> echo sys_get_temp_dir();
>>> ?>
>>>
>>> gives /tmp and the directory looks like this:
>>>
>>> # ll -rt /tmp
>>> -rw------- 1 www-data www-data  3460 Apr 14 10:17  
>>> horde_registry_cache_d8b2af3f498a5ea9323655cda64edb28
>>> -rw------- 1 www-data www-data  3448 Apr 14 10:17  
>>> horde_registry_cache_1a10e8a841a044ea63d4ec8d19066b1d
>>> -rw------- 1 www-data www-data  3487 Apr 14 10:17  
>>> horde_registry_cache_ef3c5204bbde4b436aa995fe86f863a4
>>> -rw------- 1 www-data www-data  3500 Apr 14 10:18  
>>> horde_registry_cache_bded33a3c9bfa7332b0082506443d3ae
>>> -rw------- 1 www-data www-data 13522 Apr 14 10:20  
>>> horde_autoloader_cache_dcfe726a02a17964308e92a52484786c
>>> -rw------- 1 www-data www-data 21454 Apr 14 10:29  
>>> horde_autoloader_cache_4b0b5ed4e62d134627d5ce4a0a8e8f02
>>> srwxr-xr-x 1 www-data www-data     0 Apr 14 11:56 php.socket-0
>>> -rw------- 1 www-data www-data 11468 Apr 14 12:14 horde_dns.cache
>>>
>>> So, the switch to XCache was at about 10:30 this morning. After  
>>> that only the file horde_dns.cache was updated. The other  
>>> horde-related files are "old".
>>>
>>> As you said "Install != activate in PHP" I checked this on my  
>>> phpinfo()-page. On that page I see that XCache is enabled.  
>>> Therefore I don't understand why the error message is constantly  
>>> appearing. Can someone help me with this?
>>>
>>> Greetings
>>> Jens
>>
>> Try raising the error_reporting setting in Horde's configuration to  
>> E_ALL and see if the xcache extension is logging some error.
> I found the following in horde's logfile:
>
> 2015-04-14T12:10:01+00:00 WARN: HORDE [horde] PHP ERROR:  
> xcache_set(): XCache var cache was not initialized properly. Check  
> php log for actual reason [pid
> 17454 on line 155 of "/usr/share/php/Horde/Autoloader/Cache/Bootstrap.php"]
> 2015-04-14T12:10:01+00:00 DEBUG: HORDE 1. Horde_Autoloader_Cache->shutdown()
> 2. Horde_Autoloader_Cache_Bootstrap->set()  
> /usr/share/php/Horde/Autoloader/Cache.php:109
> 3. xcache_set() /usr/share/php/Horde/Autoloader/Cache/Bootstrap.php:155
> 4. Horde_ErrorHandler::errorHandler()
>
> In XCache admin-view I find the variable  
> horde_autoloader_cache_4b0b5ed4e62d134627d5ce4a0a8e8f02 in the var  
> cache. Looks strange to me. I don't find anything related to xcache  
> in php's error_log (which I set to syslog in php.ini).
>
> I don't know of that helps but I tried the following in horde's php-console:
>
> $test = "Hello";
> xcache_set("test", $test );
>
> I see the variable test in XCache's admin-view with the value Hello.  
> So it looks as if XCache is working from inside horde. Any more hints?
>
>
> BTW: As I inspected the log file I found that the time stamp in the  
> log file is partly UTC and partly not as seen in these lines:
>
> 2015-04-14T12:10:01+00:00 DEBUG: HORDE 1. Horde_Autoloader_Cache->shutdown()
> 2. Horde_Autoloader_Cache_Bootstrap->set()  
> /usr/share/php/Horde/Autoloader/Cache.php:109
> 3. xcache_set() /usr/share/php/Horde/Autoloader/Cache/Bootstrap.php:155
> 4. Horde_ErrorHandler::errorHandler()
>
> 2015-04-14T12:10:01+00:00 DEBUG: HORDE [horde] Max memory usage:  
> 6815744 bytes [pid 17454 on line 608 of  
> "/usr/share/php/Horde/Registry.php"]
> 2015-04-14T14:10:02+02:00 DEBUG: HORDE SQL  (0,0002s)
>         SELECT cache_data FROM horde_activesync_cache WHERE cache_devid =
>           'ANDROIDXXXXXXXXX' AND cache_user = 'XXXXX' [pid 16938 on  
> line 208 of "/usr/share/php/Horde/Db/Adapter/Pdo/Base.php"]
>
> Did I misconfigure something?

Any hints? I tried using xcache from inside a website rather than from  
horde's console, and that works.

Then I put a log statement in  
/usr/share/php/Horde/Autoloader/Cache/Bootstrap.php like this:

public function set($key, $data)
     {
         $data = ($this->_mask & self::MSGPACK)
             ? msgpack_pack($data)
             : json_encode($data);

         if ($this->_mask & self::LZ4) {
             $data = @horde_lz4_compress($data);
         } elseif ($this->_mask & self::LZF) {
             $data = lzf_compress($data);
         }

         if ($this->_mask & self::APC) {
             return apc_store($key, $data);
         } elseif ($this->_mask & self::XCACHE) {
             error_log($key, 4);  // <---- Logging here
             error_log($data, 4); // <---- Logging here
             return xcache_set($key, $data);
         }
...
}

When I run horde-alarms from command line the message is triggered. I  
copied the output into a simple php-script:

<?php
$key = "horde_autoloader_cache_dcfe726a02a17964308e92a52484786c";
$val = "the_output_from_the_error_message";
$ret = xcache_set($key, $val);
var_dump($ret);
?>

This results in: "boolean true"

So I don' understand why the same operation does not work in horde.

Greetings
Jens



More information about the imp mailing list