Python OSError-错误13权限被拒绝
我试图通过管理员页面上传图片,但它一直在说:Python OSError-错误13权限被拒绝,python,django,apache,unix,Python,Django,Apache,Unix,我试图通过管理员页面上传图片,但它一直在说: [Errno 13] Permission denied: '/path/to/my/site/media/userfolder/2014/05/26' 上传时动态创建文件夹userfolder/2014/05/26 在回溯中,我发现在执行此命令期间发生了错误: 在/usr/lib64/python2.6/os.py第157行。打电话的时候 mkdir(name, mode) 也就是说,它无法创建任何文件夹,因为它没有这样做的权限 我在服务器中
[Errno 13] Permission denied: '/path/to/my/site/media/userfolder/2014/05/26'
上传时动态创建文件夹userfolder/2014/05/26
在回溯中,我发现在执行此命令期间发生了错误:
在/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>
命令允许,拒绝
通融
我必须吃点什么吗 您需要更改目录权限,以便web服务器进程可以更改目录
- 要更改目录的所有权,请使用
:chown
chown -R user-id:group-id /path/to/the/directory
- 要查看哪个用户拥有web服务器进程(相应地更改
): 或httpd
path = '/folder1/folder2'
OSError: [Errno 13] Permission denied: '/folder1'
出现了一个错误,但此错误可以正常工作:
path = 'folder1/folder2'
当base.py文件中的maybe_download函数调用发出下载请求时,您可能会遇到问题 临时文件的权限存在冲突,我自己无法找到更改权限的方法,但能够解决该问题 请执行以下操作
- 从链接()下载MNIST数据集的四个.gz文件
- 然后创建一个名为MNIST_data的文件夹(或在tensorflow\examples文件夹中的工作目录/site packages文件夹中选择)
- 直接将文件复制粘贴到文件夹中
- 复制文件夹的地址(可能是 (C:\Python\Python35\Lib\site packages\tensorflow\examples\tutorials\mnist\mnist\u data))
- 将“\”更改为“/”,因为“\”用于转义字符,以访问文件夹位置
- 最后,如果您正在学习教程,您的调用函数将是(mnist=input\u data.read\u data\u set(“mnist\u data/”,one\u hot=True)); 将“MNIST_data/”参数更改为您的文件夹位置。就像我的例子一样(mnist=input_data.read_data_set(“C:/Python/Python35/Lib/site packages/tensorflow/examples/tutorials/mnist/mnist_data”,one_hot=True))
希望它对您有用。另一个选项是确保文件不会在您机器上的任何其他位置打开。只需尝试:
sudo cp /source /destination
只要关闭文件,以防在后台打开。错误自行消失补充@falsetru的答案:在终端中运行id以获取用户id和组id 转到您面临挑战的目录/分区。 打开终端,键入id,然后按enter键。 这将显示您的用户id和组id 然后键入
chown-R用户标识:组标识。
替换用户id和组id
末尾的
表示当前分区/存储库
//周-R 1001:1001。(这是我的情况)确保目录
/path/to/my/site/media
可由web服务器进程写入。ps aux | grep apache
将向您显示进程的所有者。@falsetru这显示了root
。这就是我的django代码,对吗?那ps aux | grep httpd | grep-v grep
或ps aux | grep apache | grep-v grep
?chown-R httpd:httpd/path/to/my/site/media
(第二个httpd
是组名。如果httpd
的组与httpd
不同,您需要更改它)我用的是gunicorn。我收到了同样的错误信息。我想授予gunicorn对/home/portfolio下文件夹的读/写权限。我该怎么办?@Rexford,你最好用gevent
tag单独发布一个问题。@falsetru我通过将主文件夹及其子目录/文件的所有者更改为www数据解决了这个问题。我使用flask+apache作为后端服务器。谢谢你的指导。值得解释一下为什么会发生这种情况。Unix中文件夹名称前的/
表示该文件夹应存在于根目录中,根目录中还包含所有主要的敏感系统文件夹,例如/usr/
,/bin/
,等等(试试看,做cd/
,看看你在哪里着陆)。不允许普通进程修改根目录。省略前导的/
会将文件夹默认为当前工作目录,这是非常安全的,Unix将为您提供帮助。@mjp当我试图从“folder1/”中删除第一个斜杠时,它确实起了作用,错误消失了,但我不知道该文件夹现在在哪里?那么它在哪里呢?如何访问它?thanksI在您当前的目录中创建了一个名为folder1的文件夹。这仅适用于Windows。看起来这个问题是针对Linux的。这些限制不存在。请添加更多细节,以便您的答案能够独立。您可以解释一下这是如何工作的吗?
path = 'folder1/folder2'
sudo cp /source /destination