Magento &引用;无法确定临时目录,请手动指定缓存目录;
Magento admin引发异常: 无法确定临时目录,请手动指定缓存目录 这是新的主机包上的新安装Magento &引用;无法确定临时目录,请手动指定缓存目录;,magento,caching,Magento,Caching,Magento admin引发异常: 无法确定临时目录,请手动指定缓存目录 这是新的主机包上的新安装 使用777权限在magento安装的根目录中创建tmp文件夹 打开lib/Zend/Cache/Backend/File.php 查找$\u选项属性并将行:'cache\u dir'=>null,更改为'cache\u dir'=>'tmp' 刷新页面 通常,如果tmp文件夹的权限设置错误,这种情况会发生在共享web主机中,但有时也会发生在单个服务器上 许多人建议修改该文件: /lib/Zend
tmp
文件夹lib/Zend/Cache/Backend/File.php
$\u选项
属性并将行:'cache\u dir'=>null
,更改为'cache\u dir'=>'tmp'
通常,如果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。这只是权限问题。只需将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');
}
公共函数getTmpDir()
{
$tmpdir=array();
foreach(数组($\u ENV,$\u服务器)作为$tab){
foreach(数组('TMPDIR','TEMP','TMP','windir','SystemRoot')作为$key){
如果(设置($tab[$key])){
如果($key=='windir')或($key=='SystemRoot')){
$dir=realpath($tab[$key].\\temp');
}否则{
$dir=realpath($tab[$key]);
}
如果($this->_isGoodTmpDir($dir)){
返回$dir;
}
}
}
}
$upload=ini_get('upload_tmp_dir');
如果($上传){
$dir=realpath($upload);
如果($this->_isGoodTmpDir($dir)){
返回$dir;
}
}
如果(函数_存在('sys_get_temp_dir')){
$dir=sys_get_temp_dir();
如果($this->_isGoodTmpDir($dir)){
返回$dir;
}
}
//尝试通过创建临时文件进行检测
$tempFile=tempnam(md5(uniqid(rand(),TRUE)),“”);
如果($tempFile){
$dir=realpath(dirname($tempFile));
取消链接($tempFile);
如果($this->_isGoodTmpDir($dir)){
返回$dir;
}
}
如果($this->_isGoodTmpDir('/tmp')){
返回“/tmp”;
}
如果($this->_isGoodTmpDir('\\temp')){
返回“\\temp”;
}
Zend_Cache::ThroweException('无法确定临时目录,请手动指定缓存_目录');
}
在lib/Zend/Cache/Backend.php文件中定义
创建一个info.php
并检查upload\u tmp\u dir
下的路径是否可供Web服务器写入
<?php phpinfo();
注意:如果编译已打开,则执行步骤5。打开includes/source/Zend_Cache_Backend_File.php,并进行与File.php文件相同的更改。然后再次运行编译过程。这应该是正确的答案,而不是更改magento核心文件。这不是对这个问题的直接回答,但对我来说,这篇文章提供了你问题的答案。你知道为什么这不起作用吗?直接在/lib/文件中更改它确实可以证明文件夹在那里,并具有权限等,但在/app/目录中更改它没有任何效果。已经尝试重新运行setup:di:compile,但不确定这是否正确hi@tim baker,我的解决方案已针对Magento 1.x版进行了测试。我想你是在寻找Magento 2.x中的解决方案。我确实是这样,这会是Magento 2的一种正常覆盖方式吗?没关系,得到了答案!(php.ini)完美解决方案伟大的工作@Mohit Kumar Arora
upload_tmp_dir = /path/to/docroot/var/tmp/