Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WURFL with Zend Framework ignoring cache directory configuration

I'm following the tutorial on setting up WURFL with Zend Framework to enable easy mobile browser detection.

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

I have got it setup to the point where it can detect a desktop browser and give me all the details and features of that browser, but when I try to access the website using an iPhone (mobile safari) it throws an error when trying to write to the cache directory.

Here's what I'm seeing in my error logs:

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

However in my configuration at /application/configs/wurfl-config.php I have set the cache directory to the following:

<?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;

I've also ensured it is writable by the server, but wurfl seems to think my cache directory is still /var/tmp

How can I get wurfl to observe my cache directory setting?

Notes: The tutorial uses wurfl-1.1 as the example, I have only been able to find wurfl-1.3 on sourceforge. This may be an issue.

Notes: I have these lines in my application.ini file:

; 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"
like image 583
AntBrown Avatar asked Dec 12 '22 12:12

AntBrown


2 Answers

Not sure if this is the correct way to fix it, but for me the issue was solved by adding an extra .dir after the persistence.dir key (using WURFL 1.3.0):

In application.ini: (I don't use the php config file as I prefer not to mix in php code if I can use .ini directives)

resources.useragent.wurflapi.wurfl_config_array.persistence.dir.dir  = APPLICATION_PATH "/../data/wurfl/cache/"

So my complete config for WURFL looks like this in Zend's 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/"

perhaps a bug in the framework regarding how it reads the config array it's being passed?

like image 190
Jens Wegar Avatar answered May 02 '23 20:05

Jens Wegar


I just resolved the problem ;)

remove the [] from the code line below:

resources.useragent.wurflapi.wurfl_config_array.wurfl.patches[]      = APPLICATION_PATH "/../data/wurfl/web_browsers_patch.xml"

transform it to:

resources.useragent.wurflapi.wurfl_config_array.wurfl.patches = APPLICATION_PATH "/../data/wurfl/web_browsers_patch.xml"
like image 25
Rocco Avatar answered May 02 '23 20:05

Rocco