1

可能是我,这非常容易,但我想不出办法。我有在命令行中运行的脚本,它使用 Zend_Cache 保存缓存

$frontendOptions = array(
            'lifetime' => NULL,
            'automatic_serialization' => true
        );

$backendOptions = array(
            'cache_dir' => "/home/tmp/cache"
        );

$cache = Zend_Cache::factory('Core',
                    'File',
                    $frontendOptions,
                    $backendOptions);
$vars = Array("id1" => "12121", "id2" => "2232");
$cache->save($vars, "p_11");

我可以从命令行访问保存的缓存:

$cache->load("p_11");

在上述两种情况下,我都有使用 php-cli 在命令行中运行的 app.php 文件。

现在,我想使用浏览器访问 p_11 缓存,例如http://mytestserve.lan/test_cache.php

我已经用上面的缓存工厂创建了对象。所有参数与上述相同。但是,当我尝试加载缓存 p_11 时,我没有从命令行设置变量。什么地方出了错?

4

2 回答 2

3

当您第一次通过命令行访问缓存文件时,它可能是以您作为所有者和某些访问掩码(可能是 0600)创建的。

但是当您尝试通过浏览器打开文件时,您将充当完全不同的用户(例如,www 或 apache)。只是也许 apache 用户无法访问该文件。

于 2012-09-17T11:03:25.897 回答
3

我同意@akond 的观点,您可能应该尝试使用后端配置cache_file_umaskcache_file_perm选项:

$backendOptions = array(
    'cache_dir'        => "/home/tmp/cache",
    'cache_file_umask' => 0775, 
    'cache_file_perm'  => 0775);
于 2012-09-18T02:48:18.687 回答