PHP调用move_uploaded_file()提示 failed to open stream: Permission denied(Linxux环境,以Ubuntu12.04为例)

 在使用PHP上传文件之后,我们有时候还需要移动到特定的文件夹,这时候就要调用move_uploaded_file()函数,可是会出现如下错误:


Warning: move_uploaded_file(/var/www/cloud/upload_files/temp.txt): failed to open stream: Permission denied in /var/www/cloud/upload.php on line 27 
Warning: move_uploaded_file(): Unable to move '/tmp/phpNgjlXX' to '/var/www/cloud/upload_files/temp.txt' in /var/www/cloud/upload.php on line 27


    这是因为没有在/var/www/cloud/upload_files/目录下创建文件的权限,需要修改该目录的权限。可以简单地改为777,但不是很安全,也可以参照stackoverflow上的解决方法,先找到Apache进程的所有者,可以按照参考资料获取(我没有获取到)或者运行新的PHP脚本。
[php] view plain copy print?
<?php echo exec('whoami'); ?>  
或者:
[php] view plain copy print?
<?php echo getenv('APACHE_RUN_USER'); ?>  


    我获得的用户为www-data,该用户属于www-data组,然后修改目录的所有者
[plain] view plain copy print?
chown www-data /var/www/cloud/upload_files  
    然后修改目录的访问权限为755,即可以解决问题。
[plain] view plain copy print?
chmod 755 /var/www/cloud/upload_files  


    参考资料:
StackOverflow1  http://stackoverflow.com/questions/14596832/move-uploaded-file-failed-to-open-stream-no-such-file-or-directory
StackOverflow2  http://stackoverflow.com/questions/8103860/move-uploaded-file-gives-failed-to-open-stream-permission-denied-error-after/20047629#20047629


转自  http://blog.csdn.net/twlkyao/article/details/16809647
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值