2013-09-30 3 views
0

На моем сервере у меня несколько виртуальных хостов, я запускаю на них несколько приложений на основе ZF 1.12. При кэшировании данных (с Zend_Cache_Backend_File) каждый проект сохраняет файлы в/tmp.Zend_Cache default cache_dir в application.ini

Проблема в том, что есть некоторые проблемы с правами доступа и прав доступа. Запуск PROJECT2 Я получаю эту ошибку:

Предупреждение: FOPEN (/ TMP/Zend_Cache --- внутреннего --- Zend_LocaleC_de_DE_currencynumber_ метаданные)

и это потому, что файл был сделан project1 работает на отдельном виртуальном хосте.

Так что я хотел бы определить отдельную папку для кэшированных данных каждого проекта, что-то вроде этого:

/TMP/porject1

/TMP/project2

Лучший способ ИМО будет делать это с помощью application.ini - поэтому я попытался это:

resources.cachemanager.database.backend.name = File 
resources.cachemanager.database.backend.customBackendNaming = false 
resources.cachemanager.database.backend.options.cache_dir = "/tmp/project1" 

Но это не работает - данные по-прежнему сохраняется в/TMP - то, что я делаю неправильно?

+0

Вы пытались очистить кеш до внесения изменений? $ YourCacheManangerObject-> чистый (Zend_Cache :: CLEANING_MODE_ALL); –

+0

Я отвечу на вопрос :) Является ли база данных в resource.cachemanager.database.backend.name объектом менеджера кэша? Если это так, я не знаю, как получить к нему доступ. Проблема, описанная мной, возникает, даже если я не использую свои собственные объекты zend_cache (/ zend_cache --- internal-metadatas --- Zend_LocaleC_de_DE_currencynumber_ выполняется самим ZF). – Okizb

+0

Нет, backend.name - это тип «бэкэнд-кеша». Объект CacheMananger устанавливается в Zend_Registry. Используйте Zend_Registry :: get ('Zend_Cache_Manager') для доступа к нему. –

ответ

1

При взгляде на код Zend/Cache/backend.php, есть несколько альтернатив, чтобы позволить правильное угадывание в cache_dir:

  • Установка Evironment переменных, таких как TMPDIR, TEMP или TMP
  • набор «upload_tmp_dir "в php.ini
  • обеспечивают доступ к "/ TMP" или "\ Temp"

Тогда $_SERVER['TEMP'] = realpath('/tmp/project1'); решит вашу проблему.

Не забудьте изменить разрешение на 777 в папке с кешем

Смежные вопросы