使用Zend Framework的WURFL忽略缓存目录配置

Ant*_*own 4 zend-framework wurfl

我正在按照有关使用Zend Framework设置WURFL的教程来实现轻松的移动浏览器检测.

http://framework.zend.com/manual/en/zend.http.user-agent.html#zend.http.user-agent.quick-start

我已经将它设置为可以检测桌面浏览器并向我提供该浏览器的所有细节和功能,但是当我尝试使用iPhone(移动版Safari)访问网站时,它会在尝试写入时抛出错误到缓存目录.

这是我在错误日志中看到的内容:

2011-06-08T22:32:34-07:00 ERR (3): The file cache directory does not exist and could not be created. Please make sure the cache directory is writeable: /var/tmp
Run Code Online (Sandbox Code Playgroud)

但是在/application/configs/wurfl-config.php的配置中,我已将缓存目录设置为以下内容:

<?php
$resourcesDir            = dirname(__FILE__) . '/../../data/wurfl/';

$wurfl['main-file']      = $resourcesDir  . 'wurfl-2.0.27.zip';
$wurfl['patches']        = array($resourcesDir . 'web_browsers_patch.xml');

$persistence['provider'] = 'file';
$persistence['dir']      = $resourcesDir . '/cache/';

$cache['provider']       = null;

$configuration['wurfl']       = $wurfl;
$configuration['persistence'] = $persistence;
$configuration['cache']       = $cache;
Run Code Online (Sandbox Code Playgroud)

我也确保它可以被服务器写入,但是wurfl似乎认为我的缓存目录仍然是/ var/tmp

如何让wurfl观察我的缓存目录设置?

注意:本教程使用wurfl-1.1作为示例,我只能在sourceforge上找到wurfl-1.3.这可能是一个问题.

注意:我在application.ini文件中有这些行:

; WURFL
resources.useragent.wurflapi.wurfl_api_version = "1.1"
resources.useragent.wurflapi.wurfl_lib_dir = APPLICATION_PATH "/../library/wurfl-php-1.3.0/WURFL/"
resources.useragent.wurflapi.wurfl_config_file = APPLICATION_PATH "/configs/wurfl-config.php"
Run Code Online (Sandbox Code Playgroud)

Jen*_*gar 6

不确定这是否是正确的修复方法,但对我来说,问题是通过在persistence.dir键之后添加额外的.dir来解决的(使用WURFL 1.3.0):

在application.ini中:(我不使用php配置文件,因为如果我可以使用.ini指令,我不想混合使用php代码)

resources.useragent.wurflapi.wurfl_config_array.persistence.dir.dir  = APPLICATION_PATH "/../data/wurfl/cache/"
Run Code Online (Sandbox Code Playgroud)

所以我对WURFL的完整配置在Zend的application.ini中看起来像这样:

; Mobile device detection
resources.useragent.storage.adapter             = "Session"
resources.useragent.wurflapi.wurfl_api_version  = "1.1"
resources.useragent.wurflapi.wurfl_lib_dir      = APPLICATION_PATH "/../library/WURFL/"
resources.useragent.wurflapi.wurfl_config_array.wurfl.main-file      = APPLICATION_PATH "/../data/wurfl/wurfl.xml"
resources.useragent.wurflapi.wurfl_config_array.wurfl.patches[]      = APPLICATION_PATH "/../data/wurfl/web_browsers_patch.xml"
resources.useragent.wurflapi.wurfl_config_array.persistence.provider = "file"
resources.useragent.wurflapi.wurfl_config_array.persistence.dir.dir  = APPLICATION_PATH "/../data/wurfl/cache/"
Run Code Online (Sandbox Code Playgroud)

也许是框架中有关它如何读取正在传递的配置数组的错误?