上传目录的权限是755为什么无法上传?

记录一下遇到的上传问题和解决方法以及原因,大家看说的对不对。

我要上传的文件位置是 public/upload/时间日期/随机字符串.图片类型。
正常情况下upload目录的权限是755就可以完成上传,但是有的项目能够正常上传,有的项目却报权限问题:比如不能创建目录,之前每次遇到这种问题我直接就改upload目录权限为 777,之后就可以上传,但是一直不知道什么原因。

产生的原因?

然后对比了一下两个项目,发现正常上传不用修改权限的项目(前者),文件所属者及所属组是www;而不能上传必须改权限的项目(后者),文件所属者和所属组是root。我猜想是不是前者是通过ftp上传,后者通过sftp(root账户),导致前者的项目文件所属者都是www,而后者的项目文件所属者都是root?

解决的方法(针对于后者不能上传文件)

第一种方法就是改upload目录权限为777;

chmod -R 777 upload

第二种就是改upload目录所属者及所属组为www(推荐)

chown -R www:www upload

不知道上面说的对不对?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 2

宝塔吧?

3年前 评论
shaonian1996 (楼主) 3年前
enderman

linux系统文件上传涉及权限问题,需要关注 PHP 和服务器软件运行的用户的权限 一般情况下各软件安装时都会默认新建一个用户
如果我没记错的话 nginx默认用户是nginx apache默认用户是www
但都不可能是 root 用户
所以软件在操作上传文件目录中的文件时,会出现权限问题
前者修改为777权限会导致不安全 后者修改权限符合权限最小化的原则
具体细节可以去百度linux权限和查看服务器软件配置文件中设置的运行用户

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!