代码之家  ›  专栏  ›  技术社区  ›  appel

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

  •  2
  • appel  · 技术社区  · 10 年前

    我试图使用一个简单的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 回复  |  直到 10 年前
        1
  •  4
  •   Raptor    8 年前

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

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

    • 所有者拥有读、写和;执行权限
    • 组&公共仅具有读取和执行权限

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

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

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

        2
  •  2
  •   tlenss    10 年前

    您可能应该将上传文件夹(移动)到与PHP运行时相同的用户。试试这个

    chown -R nobody uploaddir
    chmod -R 755 uploaddir
    
        3
  •  0
  •   arunrc    10 年前

    好好谈谈这个 Permission

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