每次上传新文件时都会出现 403 禁止错误

Posted

技术标签:

【中文标题】每次上传新文件时都会出现 403 禁止错误【英文标题】:403 Forbidden error everytime I upload a new file 【发布时间】:2015-05-21 13:20:13 【问题描述】:

所以这可能是我还没有学会的服务器管理技巧 - 但我有一个问题。我每次都在同一目录中不断地将更多文件(特别是 .jpg、.png、.jpeg 等图像)上传到我的服务器。每当我在网页上包含这些图像时(通常使用 html 标签),我总是会收到一条错误消息,上面写着“服务器响应 403 禁止错误”。

每次发生这种情况时,我都必须在终端上通过 ssh 远程登录,然后导航到该文件夹​​,然后执行相同的 chown / chmod 命令,这样这些图像就可以公开访问了。有什么方法可以简化这个过程,这样我就不必每次将新照片上传到我的图像目录时都继续运行该命令?这样从现在开始上传到我的图片目录的每张照片都将自动公开访问,我不会收到这个 403 禁止错误?这很乏味,让我很头疼,所以我希望你们以前回答过这样的问题。

谢谢!

【问题讨论】:

您对您的图像目录授予了什么权限? 你用什么上传? 【参考方案1】:

如果您通过网络上传,这不会发生,我想您通过 FTP 或 SFTP 在公共 html 文件夹上上传文件。 要解决此问题,您应该在 Web 服务器用户组中创建一个系统帐户,使用该帐户将文件上传到 Web 服务器目录。

在 Linux/UNIX 上,找出 Web 服务器使用的组(通常是 www-data),然后在该组中创建一个用户:

useradd -m -d /path/to/upload/folder -s /bin/bash -g www-data uploader

然后给它一个密码(或生成认证的公钥)

passwd uploader

此时通过 SSH/SFTP 与新创建的用户“uploader”连接,您将看到使用该用户上传的文件将拥有所有权

-rw-r--r--  uploader     www-data 

这应该足以让 Web 服务器提供内容,否则检查 httpd 错误日志和 /var/log/audit/audit.log 以查看 SELinux 是否阻止 httpd。

【讨论】:

我在 Mac 上,所以是 Unix。 我的意思是远程服务器是 Linux 对吧?如果你 SSH 可能是的

以上是关于每次上传新文件时都会出现 403 禁止错误的主要内容,如果未能解决你的问题,请参考以下文章

Azure Blob 存储上传错误:(403)禁止

使用预签名 URL 上传到 S3 存储桶会出现 403 禁止错误

如何在 Android 中使用 REST API 将图像上传到 S3 存储桶,出现禁止错误:403

为 Google 课堂获取课程列表时出现 403 禁止错误

nginx 上传文件时返回 403 禁止错误

pom.xml 每次添加新依赖时都会出错