Magento &引用;无法确定临时目录,请手动指定缓存目录;

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

Magento admin引发异常:

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

这是新的主机包上的新安装

  • 使用777权限在magento安装的根目录中创建
    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/