linux文件上传,给文件或目录添加apache权限的方法
在LAMP环境中,测试一个简单的php文件上传功能时,发现/var/log/apache2/error.log中出现如下php警告:
1.[TueJan3109:40:272012][error][client127.0.0.1]PHPWarning:move_uploaded_file(/home/leotody/32883679.jpeg):failedtoopenstream:Permissiondeniedin/var/www/upload_file.phponline25,referer:http://localhost/info.html
2.[TueJan3109:40:272012][error][client127.0.0.1]PHPWarning:move_uploaded_file():Unabletomove'/tmp/phps05ssU'to'/home/leotody/32883679.jpeg'in/var/www/upload_file.phponline25,referer:http://localhost/info.html
提示没有访问权限,文件上传的代码如下:
if(file_exists("upload/".$_FILES["file"]["name"])) { echo$_FILES["file"]["name"]."alreadyexists."; } else { if(move_uploaded_file($_FILES["file"]["tmp_name"],"upload/".$_FILES["file"]["name"])) { echo"Storedin:"."upload/".$_FILES["file"]["name"]; } else { echo"moveerror!"; } }
页面中显示"moveerror!",说明move_uploaded_file()函数执行失败。
通过查找资料,发现网上有说是selinux启动的原因,检查系统并未启动selinux,查看upload目录默认权限ls-ldupload,结果为755:
1.drwxr-xr-x2rootroot40962012-01-3110:59upload
将upload目录权限改为777,sudochmod777upload,再测试上传功能成功。但这种修改权限的方法并不安全。
故可以改upload目录的拥有者为www-data(即apache),sudochown-Rwww-data:www-dataupload,然后再测试上传功能成功。
1.drwxr-xr-x2www-datawww-data40962012-01-3110:59upload
以上这篇linux文件上传,给文件或目录添加apache权限的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。