lamp使用php处理上传文件,调用move_uploaded_file函数遇到目录写权限问题及解决过程

本文分析并解决了从本地开发环境到生产环境迁移时,使用lamp环境和PHP处理上传文件时遇到的权限问题。通过修改Apache配置或选择合适的文件目录解决了无法写入文件的问题。
问题:lamp使用php处理上传文件,调用move_uploaded_file函数,遇到如下问题:[function.move-uploaded-file]: failed to open stream: Permission denied in ERROR


分析解决:

很明显是权限问题,目录没有写权限,但是在自己的开发环境上面都好好的,为什么一切换环境就出问题呢。

首先解决找出谁来写,找出apache配置httpd.conf,user和group 开发环境设置为user1和users,move_uploaded_file函数要写入的文件的目录权限是drw-r--r--,用户是user1,所属用户组是users, 因此php对其有写权限。  另外一个环境,apache配置httpd.conf中,user和group都是nobody,那么很明显对这个目录是没有写权限的,也就是为什么写文件失败。

找出谁来写以后,就知道它的权限范围了。有两个解决方案,一个是修改apache配置,把user和group修改为user1和users;一个是重新找一个有权限的目录来给他写。第一个方案比较麻烦,涉及到修改apache配置,在生产环境中还是比较麻烦的,还得考虑各种安全性问题,为了这么个问题大动干戈没必要。第二个方案相对简单,既然php上传的文件默认存放在/tmp/目录,那么除非必要,否则还是放到这个目录下面去就ok了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值