我正在学习PHP并尝试使用以下代码上传文件:
$destination = "uploads/".$_FILES['userfile']['name'];
move_uploaded_file($_FILES['userfile']['tmp_name'], $destination);
但我面临着
无法打开流:权限被拒绝
我可以将“uploads”目录的权限更改为每个人都可写,但当然这是不好的做法。 文件夹权限为:
drwxr-xr-x 2 loai loai 4096 Dec 30 12:44 uploads
并运行ps aux | grep httpd
会产生
loai 6728 0.0 0.0 4368 832 pts/1 S+ 18:37 0:00 grep --colour=auto httpd
那么apache进程是否应该能够在给定目录中写入? 感谢
答案 0 :(得分:2)
首先,正如问题评论中所述,您的ps
输出正在显示grep
进程本身,而不是httpd
进程(或您的Web服务器)。这可能意味着您的Web服务器以不同的用户身份运行,而不是loai
。更改uploads
文件夹的所有权或使其可写入组,然后将Web服务器的用户添加到相应的组
答案 1 :(得分:1)
您可以尝试使用目标的完整路径。类似的东西:
/var/www/project/uploads
答案 2 :(得分:0)
如果你可以用相对路径读取该目录,那么只需将其选中:
cd $path_to_your_site_root
chown -R loai:loai uploads