0

我正在学习 PHP 并尝试使用以下代码上传文件:

$destination = "uploads/".$_FILES['userfile']['name'];
move_uploaded_file($_FILES['userfile']['tmp_name'], $destination);

但我面临

无法打开流:权限被拒绝

我可以将“上传”目录的权限更改为每个人都可写,但这当然是不好的做法。文件夹权限为:

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进程不应该能够在给定目录中写入吗?谢谢

4

3 回答 3

1

首先,正如对问题的评论中所述,您的ps输出显示的是grep进程本身,而不是httpd进程(或任何您的 Web 服务器)。所以这可能意味着您的 Web 服务器正在以不同的用户身份运行,而不是作为loai. 更改uploads文件夹的所有权或使其组可写,然后将 Web 服务器的用户添加到适当的组

于 2012-12-30T17:51:02.627 回答
1

您可以尝试使用完整路径作为目的地。就像是:

/var/www/project/uploads
于 2012-12-30T17:04:46.567 回答
0

如果您可以使用相对路径从该目录中读取,则只需 chown 它:

cd $path_to_your_site_root
chown -R loai:loai uploads
于 2012-12-30T17:45:12.853 回答