Magento的。目标文件夹不可写或不存在

时间:2011-02-23 12:08:27

标签: php magento permissions

嘿,我遇到了以下问题,请帮忙。

我尝试将图片添加到产品时“目标文件夹不可写...”,但所有需要文件夹的权限为 777 !我删除了服务器上的所有文件,没有触摸数据库,从头开始用新数据库重新安装Magento,一切正常。 但当我切换到以前的数据库(更改 local.xml 中的设置)时,错误再次出现。

数据库如何影响文件夹权限?

更新:

Thanx很多,我们发现Magento从这种方法中跳了出来:

public function getBaseMediaUrl()
{
   return Mage::getBaseUrl('media') . 'catalog/product';
}

以下方法:

public function getBaseTmpMediaUrl()
{
        return Mage::getBaseUrl('media') . 'tmp/catalog/product';
}

有人知道为什么以及如何????

7 个答案:

答案 0 :(得分:16)

Magento代码库中只有一个使用该错误语言的位置。

File: lib/Varien/File/Uploader.php
...
if( !is_writable($destinationFolder) ) {
    throw new Exception('Destination folder is not writable or does not exists.');
}   
...

在此

之上添加一些临时调试代码
...
if( !is_writable($destinationFolder) ) {
    Mage::Log($destinationFolder);
    //or
    var_dump($destinationFolder);   
    throw new Exception('Destination folder is not writable or does not exists.');
}   
...

这会让你知道Magento要写的确切文件夹,但不能。检查这个文件夹,你会发现它不可写。回顾is_writable上的边缘案例也可能会对这一主题有所了解。

答案 1 :(得分:3)

转到:lib / Varien / File / Uploader.php

临时更改以下代码并尝试上传图片。现在在错误消息中,您可以看到文件夹路径。 在文件夹路径中,您必须提供文件权限777,它将正常工作。解决错误后,将代码恢复为正常状态。

if( !is_writable($destinationFolder) ) {
    var_dump($destinationFolder);   
    throw new Exception(''.$destinationFolder.'Destination folder is not writable or does not exists.');
} 

答案 2 :(得分:1)

我在Magento上传图片时出现以下错误,然后我执行了以下步骤,这对我有用。

Cd /var/www/

chmod 755 -R /html
chown apache:apache -R /html
setenforce 0

然后重启apache ..

答案 3 :(得分:0)

Magento 2

这是Magento 2中的文件,错误来自:

vendor/magento/framework/File/Uploader.php

在第256行,您可以暂时放置此代码以获取不可写/不存在的文件夹:

if( !is_writable($destinationFolder) ) {
    error_log($destinationFolder);        
    // or
    // throw new Exception('Destination folder is not writable or does not exists.');
    throw new Exception($destinationFolder);
} 

否则,您可以检查您是否拥有这些文件夹并且可以由Web服务器写入:

  • pub/media/catalog/
  • pub/media/catalog/category
  • pub/media/catalog/product
  • pub/media/images
  • pub/media/wysiwyg/

答案 4 :(得分:0)

可能是Plesk政府颁发的过期证书(这是我的情况)。

我尝试了上面的步骤,但它没有用。从那里我尝试通过FileZilla访问文件,立即向所有文件夹授予权限,因此有关过期证书的错误消息。它不是商店本身的SSL证书,而是Plesk的管理。我创建了一个新的自签名证书,应用了Plesk管理,一切恢复正常。

这对我有用。我离开这里是我的贡献。

祝你好运

答案 5 :(得分:0)

我遇到了同样的问题:

enter image description here

登录到您的SSH:

通过运行以下命令来授予媒体文件夹权限:

 cd public_html/media
 find . -type d -exec chmod 777 {} \;

答案 6 :(得分:0)

更改媒体文件夹的权限后,我的问题得到解决。只需找到服务器上的媒体文件夹,右键单击->更改权限->为文件夹权限设置值777。

Permissions dialog