查看使用php上传的照片的权限问题

时间:2018-01-27 23:17:19

标签: php permissions image-uploading

我正在关注udemy上使用php上传图像文件的教程。我可以选择一个图像并将其上传到文件夹而没有任何问题。

当我将图片上传到文件夹后点击图片时,windows photo viewer说:“photo.png您似乎无权查看此文件。请检查权限并重试”。< / p>

当我检查权限时,它说“您必须具有读取权限才能查看此文件的属性”。

我使用chmod函数设置为0755,允许所有者读写,并让其他人读取它。我尝试更改chmod代码,但没有帮助。

我认为它与我的服务器权限有关,但在谷歌上找不到任何解决方案。我的图像上传到Abyss Web Server。

以下是代码:

<?php 

error_reporting(E_ALL);
ini_set('display_errors', 1);

function upload_file() {
    //setup
    $tmp_name = $_FILES['file']['tmp_name'];
    $target_dir = 'uploads/';
    $target_file = $target_dir . basename($_FILES['file']['name']);
    $max_file_size = 5000000; //5mb
    $allowed_file_types = array('application/pdf; charset=binary');
    $allowed_image_types = array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG);

    //check if image type is allowed
    $image_check = getimagesize($tmp_name);

    if(! in_array($image_check[2], $allowed_image_types)) {
        //if not allowed image check if allowed file type
        exec('file -bi' . $tmp_name, $file_check);

        if(! in_array($file_check[0], $allowed_file_types)) {
            return 'This file type is not allowed';
        }
    }

    //check if file already exists
    if(file_exists($target_file)) {
        return 'Sorry that file already exists';
    }

    //check file size
    if(file_exists($target_file)) {
        return 'Sorry this file is too big';
    }

    //store the file
    if(move_uploaded_file($tmp_name, $target_file)) {
        chmod($target_file, 0644);
        return 'Your file was uploaded';
    }
    else {
        return 'There was a problem storing your file. Try again?';
    }
}

if(! empty($_FILES)) {
    echo upload_file();
}

?>

<form action="" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="file">
    <input type="submit" Value="upload">
</form>

1 个答案:

答案 0 :(得分:0)

由于使用专门用于测试动机的自定义HTML页面加载文件确实可以正确显示图像,因此很可能是热链接保护问题。 (这是在对该问题发表一些评论后发现的。)

例如,在cPanel中,有一个管理此功能的工具,它围绕着名为.htaccess的文件的使用。该文件用于Web开发世界中的许多事情。

有些人不喜欢访问他们受版权保护的图片,所以避免没有经验的人(比如说,“用户名中的人”)这样做的一种方法是启用此保护。这适用于您设置的任何给定文件扩展名。

解决此问题的一种方法是转到cPanel并禁用(或相应地修改)Hotlink Protection功能。另一种方法是找到导致问题的.htaccess文件,这需要了解它的工作方式和使用的语法。