0

在我的服务器上,我有多个虚拟主机,我在它们上运行了几个基于 ZF 1.12 的应用程序。当缓存数据(使用 Zend_Cache_Backend_File)时,每个项目都将文件保存在 /tmp 中。

问题是存在一些名称和访问权限问题。运行 project2 我得到这个错误:

警告:fopen(/tmp/zend_cache---internal-metadatas---Zend_LocaleC_de_DE_currencynumber_)

那是因为该文件是由在单独的虚拟主机上运行的 project1 制作的。

所以我想为每个项目的缓存数据定义单独的文件夹,如下所示:

/tmp/项目1

/tmp/project2

IMO 最好的方法是使用 application.ini 来做到这一点 - 所以我尝试了这个:

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

但它不工作 - 数据仍然保存在 /tmp - 我做错了什么?

4

1 回答 1

1

查看 Zend/Cache/Backend.php 代码时,有一些替代方法可以允许正确猜测 cache_dir:

  • 设置环境变量,如 TMPDIR、TEMP 或 TMP
  • 在 php.ini 中设置“upload_tmp_dir”
  • 允许访问“/tmp”或“\temp”

然后$_SERVER['TEMP'] = realpath('/tmp/project1');将解决您的问题。

记得把缓存文件夹的权限改成777

于 2013-09-30T20:01:30.593 回答