PHP move_uploaded_file权限被拒绝(权限设置为755)

时间:2014-08-21 09:08:23

标签: php file-permissions

我尝试使用简单的HTML输入表格上传用户的照片,但我收到以下错误。我已将上传文件夹的权限设置为755.我尝试了777但是有效,但我已经知道将其设置为777并不建议我应该能够使用755吗?

Warning: move_uploaded_file(uploads/2014_08_21_11_03_14k.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/yadayada/register.php on line 136
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php8KQwyh' to 'uploads/2014_08_21_11_03_14k.jpg' in /home/yadayada/register.php on line 136

这是我的PHP代码:

$userPhotoUrl = 'uploads/'.date('Y_m_d_H_i_s').$_FILES['photo']['name'];

if (is_uploaded_file($_FILES['photo']['tmp_name'])) {
    if (!move_uploaded_file($_FILES['photo']['tmp_name'], $userPhotoUrl)) {
        // show error message
        return;
    }
} else {
    // show error message
    return;
}

3 个答案:

答案 0 :(得分:4)

首先,你必须了解什么是755。

对于文件夹, 755 表示drwxr-xr-x,表示:

  • 所有者拥有Read,Write&执行权限
  • Group&公共只有读取和执行权限

由于运行PHP的用户可能不是该文件夹的所有者,因此它没有该文件夹的写入权限。之一:

  • chown PHP用户的文件夹;或
  • 你做到了777:每个人都有读,写&执行权限

当然,后一种选择存在安全问题,就好像某人将可执行shell脚本上传到您的文件夹一样,他可以执行该脚本。因此,你应该坚持第一选择。

答案 1 :(得分:1)

您可能应该将上传文件夹(移动)与PHP运行的同一用户联系起来。试试这个

chown -R nobody uploaddir
chmod -R 755 uploaddir

答案 2 :(得分:0)

查看此Permission

如果您设置了755,您的网络服务器将成为该文件夹的所有者。