OSError - Errno 13权限被拒绝

时间:2014-05-26 13:02:55

标签: python django apache unix

我正在尝试通过管理页面上传图片,但它一直在说:

[Errno 13] Permission denied: '/path/to/my/site/media/userfolder/2014/05/26'

在上传时动态创建文件夹userfolder/2014/05/26

在Traceback中,我发现在此命令期间发生错误:

在/usr/lib64/python2.6/os.py第157行。调用

mkdir(name, mode) 

意思是,它无法创建任何文件夹,因为它没有权限执行此操作

我在服务器中使用OpenSuse作为操作系统。在httpd.conf中,我有这个:

<Directory /path/to/my/site/media>
   Order allow,deny
   Allow from all
</Directory>

我需要chmod或chown的东西吗?

7 个答案:

答案 0 :(得分:22)

您需要更改目录权限,以便Web服务器进程可以更改目录。

  • 要更改目录的所有权,请使用chown

    chown -R user-id:group-id /path/to/the/directory
    
  • 要查看哪个用户拥有Web服务器进程(相应地更改httpd):

    ps aux | grep httpd | grep -v grep
    

    OR

    ps -efl | grep httpd | grep -v grep
    

答案 1 :(得分:11)

如果在文件夹名称前有斜杠,也可能发生这种情况:

path = '/folder1/folder2'

OSError: [Errno 13] Permission denied: '/folder1'

出现错误,但这个工作正常:

path = 'folder1/folder2'

答案 2 :(得分:0)

当base.py文件中的maybe_download函数调用发出下载请求时,您可能遇到问题。

临时文件的权限存在冲突,我自己无法找到更改权限的方法,但能够解决问题。

执行以下操作......

  • 从链接(http://yann.lecun.com/exdb/mnist/
  • 下载MNIST数据集的四个.gz文件
  • 然后创建一个文件夹名称MNIST_data(或您在tensorflow \ examples文件夹中的工作目录/ site packages文件夹中的选择)。
  • 直接将文件粘贴到文件夹中。
  • 复制文件夹的地址(可能是 (C:\ Python \ Python35 \ Lib \ site-packages \ tensorflow \ examples \ tutorials \ mnist \ MNIST_data))
  • 将“\”更改为“/”,因为“\”用于转义字符,以访问文件夹位置。
  • 最后,如果你正在学习这些教程,你的调用函数将是(mnist = input_data.read_data_sets(“MNIST_data /”,one_hot = True)); 将“MNIST_data /”参数更改为文件夹位置。在我的情况下将是(mnist = input_data.read_data_sets(“C:/ Python / Python35 / Lib / site-packages / tensorflow / examples / tutorials / mnist / MNIST_data”,one_hot = True))

然后就完成了。 希望它适合你。

答案 3 :(得分:0)

只需尝试:

sudo cp /source /destination

答案 4 :(得分:0)

只要在后台打开文件,只需将其关闭即可。错误会自行消失

答案 5 :(得分:0)

补充@falsetru的答案:在终端中运行id以获取您的user_id和group_id

转到您面临挑战的目录/分区。 打开终端,输入ID,然后按Enter。 这将显示您的user_id和group_id

然后输入

chown -R用户ID:组ID。

替换用户ID和组ID

。最后指示当前分区/存储库

// chown -R 1001:1001。 (那是我的情况)

答案 6 :(得分:-2)

另一种选择是确保文件不会在计算机上的其他任何地方打开。