“无法确定临时目录,请手动指定cache_dir”

时间:2013-12-25 13:11:55

标签: magento caching

Magento管理员抛出异常:

  

无法确定临时目录,请手动指定cache_dir

这是新主机包的新安装。

4 个答案:

答案 0 :(得分:41)

通常情况下,如果tmp文件夹的权限设置错误,它将在共享的Web托管中发生,但有时也会发生在个别服务器上。

很多人建议修改文件: /lib/Zend/Cache/Backend/File.php来解决此问题。但是,当您升级Magento时,它可能是一个陷阱,因为此文件位于Magento的核心文件中。我建议使用Magento的覆盖功能。

首先,将/lib/Zend/Cache/Backend/File.php复制到/app/code/local/Zend/Cache/Backend/File.php

然后在第91行或接近此行,你会发现:

'cache_dir' => null,

更改为:

'cache_dir' => "var/tmp/",

您可以在任何位置更改缓存文件夹。 现在在var文件夹下创建一个名为tmp(或上面给出的任何名称)的目录,并在必要时将权限更改为 777

答案 1 :(得分:6)

这只是许可问题。只需将777权限设置为缓存目录,即可完成所有操作。试试吧。

有关详情,请点击链接。

当你设置权限时,请确保它被重复设置..

chmod 777 -R / var / cache

这是函数


    public function getTmpDir()
        {
            $tmpdir = array();
            foreach (array($_ENV, $_SERVER) as $tab) {
                foreach (array('TMPDIR', 'TEMP', 'TMP', 'windir', 'SystemRoot') as $key) {
                    if (isset($tab[$key])) {
                        if (($key == 'windir') or ($key == 'SystemRoot')) {
                            $dir = realpath($tab[$key] . '\\temp');
                        } else {
                            $dir = realpath($tab[$key]);
                        }
                        if ($this->_isGoodTmpDir($dir)) {
                            return $dir;
                        }
                    }
                }
            }
            $upload = ini_get('upload_tmp_dir');
            if ($upload) {
                $dir = realpath($upload);
                if ($this->_isGoodTmpDir($dir)) {
                    return $dir;
                }
            }
            if (function_exists('sys_get_temp_dir')) {
                $dir = sys_get_temp_dir();
                if ($this->_isGoodTmpDir($dir)) {
                    return $dir;
                }
            }
            // Attemp to detect by creating a temporary file
            $tempFile = tempnam(md5(uniqid(rand(), TRUE)), '');
            if ($tempFile) {
                $dir = realpath(dirname($tempFile));
                unlink($tempFile);
                if ($this->_isGoodTmpDir($dir)) {
                    return $dir;
                }
            }
            if ($this->_isGoodTmpDir('/tmp')) {
                return '/tmp';
            }
            if ($this->_isGoodTmpDir('\\temp')) {
                return '\\temp';
            }
            Zend_Cache::throwException('Could not determine temp directory, please specify a cache_dir manually');
        }

在文件lib / Zend / Cache / Backend.php中定义

http://www.webtechnologycodes.com/magento-error-could-not-determine-temp-directory-please-specify-a-cache_dir-manually/

答案 2 :(得分:4)

  1. 使用777权限在magento安装的根目录中创建tmp文件夹。
  2. 打开lib/Zend/Cache/Backend/File.php
  3. 查找$_options属性并更改行:'cache_dir' => null,更改为'cache_dir' => 'tmp'
  4. 刷新页面。

答案 3 :(得分:3)

创建info.php并检查upload_tmp_dir下面的路径是否可以为网络服务器写入。

<?php phpinfo();

否则在托管环境中设置路径。 请注意,此设置不能放在.htaccess个文件中,但有些主机允许将单个php.ini文件放在docroot中:

upload_tmp_dir = /path/to/docroot/var/tmp/