0

私のサーバーには複数の仮想ホストがあり、それらで ZF 1.12 に基づくいくつかのアプリケーションを実行しています。(Zend_Cache_Backend_File を使用して) データをキャッシュする場合、各プロジェクトはファイルを /tmp に保存します。

問題は、名前とアクセス権の問題がいくつかあることです。project2 を実行すると、次のエラーが発生します。

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

これは、ファイルが別の仮想ホストで実行されている project1 によって作成されたためです。

したがって、プロジェクトごとにキャッシュされたデータごとに個別のフォルダーを定義したいと思います。次のようになります。

/tmp/porject1

/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 に答える