繁体   English   中英

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

[英]PHP move_uploaded_file permission denied (permission set to 755)

我正在尝试使用简单的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;
}

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

对于文件夹, 755表示drwxr-xr-x ,这意味着:

  • 所有者拥有读取,写入和执行权限
  • 组和公共仅具有读取和执行权限

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

  • 您将文件夹chown了PHP的用户; 要么
  • 您将其777 :每个人都具有读取,写入和执行权限

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

您可能应该将上传文件夹(移动)与运行PHP的用户锁定在一起。 尝试这个

chown -R nobody uploaddir
chmod -R 755 uploaddir

看一下这个权限

如果您设置755,则您的Web服务器将是该文件夹的所有者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM