WURFL с Zend Framework игнорирует конфигурацию каталога кэша - PullRequest
4 голосов
/ 10 июня 2011

Я следую руководству по настройке WURFL с Zend Framework, чтобы облегчить обнаружение мобильного браузера.

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

Я настроил его так, что он может обнаружить настольный браузер и предоставить мне все детали и функции этого браузера, но когда я пытаюсь получить доступ к веб-сайту с помощью iPhone (мобильное сафари), он выдает ошибку, когда пытаюсь записать в каталог кеша.

Вот что я вижу в своих журналах ошибок:

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

Однако в моей конфигурации по адресу /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;

Я также удостоверился, что он доступен для записи на сервере, но wurfl, похоже, считает, что мой каталог кэша по-прежнему / var / tmp

Как мне заставить wurfl наблюдать за настройками моего каталога кеша?

Примечания : в этом руководстве в качестве примера используется wurfl-1.1. Мне удалось найти только wurfl-1.3 на sourceforge. Это может быть проблемой.

Примечания : У меня есть следующие строки в моем файле 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"

Ответы [ 6 ]

6 голосов
/ 21 июня 2011

Не уверен, что это правильный способ исправить это, но для меня проблема была решена путем добавления дополнительного .dir после ключа persistence.dir (с использованием WURFL 1.3.0):

В приложении.ini: (я не использую файл конфигурации php, так как предпочитаю не смешивать код php, если я могу использовать директивы .ini)

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

Так что моя полная конфигурация для WURFL выглядит так в Zend'sapplication.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/"

возможно, ошибка во фреймворке, касающаяся того, как он читает массив конфигурации, который передается?

2 голосов
/ 28 сентября 2011

Я решил проблему с помощью Wurfl 1.3.1 и прочитал это:

http://wurfl.sourceforge.net/nphp/

2 голосов
/ 28 июня 2011

Кажется, формат параметров изменился в версии 1.3 - документы WURFL здесь содержат подробности и файл примера.

Итак, для исходного вопроса строку $ persistence ['dir'] необходимо изменить на:

$persistence['params']   = array(
    'dir' => $resourcesDir . '/cache/'
);
2 голосов
/ 21 июня 2011

Я только что решил проблему;)

удалите [] из строки кода ниже:

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

преобразуйте его в:

resources.useragent.wurflapi.wurfl_config_array.wurfl.patches = APPLICATION_PATH "/../data/wurfl/web_browsers_patch.xml"
1 голос
/ 12 июня 2012

Что касается ответа Дженса Вегара выше , существует запрос на исправление ошибки, поскольку это не ясно.

http://framework.zend.com/issues/browse/ZF-12284

0 голосов
/ 10 июня 2011

Вы настраивали ресурс UserAgent для использования настроек, которые вы здесь показываете?

Вы должны добавить записи resource.useragent.wurfl_ * в файл application.ini.

Вот образец:

resources.useragent.wurflapi.wurfl_api_version = "1.1"
resources.useragent.wurflapi.wurfl_lib_dir = APPLICATION_PATH "/../library/WURFL/"
resources.useragent.wurflapi.wurfl_config_file = APPLICATION_PATH "/configs/wurfl-config.php"
...