我试图通过我的 Web 应用程序将图片上传到服务器。我发现在我的本地机器上,父目录的 771 权限是可以接受的。然而,在 Web 服务器上,即使是 777 目录也不允许我上传图片。
假设代码本身没有缺陷,那么这里可能发生了什么?我注意到的一个区别是,即使一路追溯到目录层次结构,这些文件在我的本地机器上归“daniel”所有(也是组的一部分),而在 Web 服务器上则归“root”所有。除此之外,我看不出有什么区别。
如果需要,我可以填写任何其他详细信息。
答案1
这些 find 命令应该可以解决问题:
假设您的 apache 以 www-data 用户身份运行。也可能是 nobody。这将修复所有权:
找到 /path/to/your/docroot !-user www-data -exec chown www-data:www-data {} \;
修复目录的权限:
查找 /path/to/your/docroot -type d !-perm 755 -exec chmod 755 {} \;
修复文件权限
查找 /path/to/your/docroot -type f !-perm 644 -exec chmod 644 {} \;
答案2
Apache 或 httpd 也必须是 UID 或 GID。并且具有读、写和执行权限。
答案3
在 ubuntu 上,apache 使用 www-data 用户/组运行
所以如果你
chown -R www-data pic/dir
或者chgrp -R www-data pic/dir
它应该工作。
如果您使用 chgrp,请确保至少775
在目录上使用,而使用 chown,您可以755
在目录上使用权限。