Magento管理员抛出异常:
无法确定临时目录,请手动指定cache_dir
这是新主机包的新安装。
答案 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中定义
答案 2 :(得分:4)
tmp
文件夹。lib/Zend/Cache/Backend/File.php
$_options
属性并更改行:'cache_dir' => null
,更改为'cache_dir' => 'tmp'
,答案 3 :(得分:3)
创建info.php
并检查upload_tmp_dir
下面的路径是否可以为网络服务器写入。
<?php phpinfo();
否则在托管环境中设置路径。
请注意,此设置不能放在.htaccess
个文件中,但有些主机允许将单个php.ini
文件放在docroot
中:
upload_tmp_dir = /path/to/docroot/var/tmp/