Php 共享主机问题-无根目录访问-文件上载

Php 共享主机问题-无根目录访问-文件上载,php,file-upload,upload,Php,File Upload,Upload,当我尝试上传到/non\u public\u html/时,我的托管团队的支持团队说: 。不幸的是,我有一些坏消息。由于共享主机限制,您似乎无法通过脚本移动该文件。为了拥有“www数据”权限,您需要有一个VPS包,以便获得根权限 所以我不能上传到/public\u html/之外的地方 但是,当我尝试上载到public_html时仍然失败,这是我的代码: $PICTURE_UPLOAD_DIR = '/public_html/my_uploaded/'; $PICTURE_MIMES = [

当我尝试上传到
/non\u public\u html/
时,我的托管团队的支持团队说:

。不幸的是,我有一些坏消息。由于共享主机限制,您似乎无法通过脚本移动该文件。为了拥有“www数据”权限,您需要有一个VPS包,以便获得根权限

所以我不能上传到
/public\u html/
之外的地方

但是,当我尝试上载到public_html时仍然失败,这是我的代码:

$PICTURE_UPLOAD_DIR = '/public_html/my_uploaded/';
$PICTURE_MIMES = [
    'jpg' => 'image/jpeg',
    'png' => 'image/png'
];

$image = $_FILES['image'];
$imagepath = $image['tmp_name'];

// Undefined | Multiple Files | $_FILES Corruption Attack
// If this request falls under any of them, treat it invalid.
if (!isset($image['error']) || is_array($image['error'])) {
    $ojson['error'] = 'Invalid parameters'; $finish();
}

// Check $image['error'] value.
switch ($image['error']) {
    case UPLOAD_ERR_OK:
        break;
    case UPLOAD_ERR_NO_FILE:
            $ojson['error'] = 'No file sent'; $finish();
    case UPLOAD_ERR_INI_SIZE:
    case UPLOAD_ERR_FORM_SIZE:
        $ojson['error'] = 'Exceeded filesize limit.'; $finish();
    default:
        $ojson['error'] = 'Unknown errors.'; $finish();
}

// You should also check filesize here.
$size = filesize($imagepath);
// $size = $image['size']; // dont trust $_FILES
if ($size > 1000000) {
    $ojson['error'] = 'Exceeded filesize limit.'; $finish();
}

// DO NOT TRUST $_FILES['image']['mime'] VALUE !!
// Check MIME Type by yourself.
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mime = $finfo->file($imagepath);
// if ($ext = array_search($mime, $PICTURE_MIMES) === false) { // this doesnt set $ext
if (false === $ext = array_search($mime, $PICTURE_MIMES)) {
    $ojson['error'] = 'Invalid file format.'; $finish();
}
$ojson['$ext'] = $ext;
$ojson['$mime'] = $mime;

// generate random file name
while (true) {
    $filename = generateRandomString().'.'.$ext;
    $pathtarget = $PICTURE_UPLOAD_DIR.$filename;
    if (!file_exists($pathtarget)) break;
}
$ojson['$pathtarget'] = $pathtarget;
$ojson['$imagepath'] = $imagepath;

// $getimg = getimagesize($imagepath);

if(is_uploaded_file($imagepath)){
    $ojson['isuploaded'] = true;
} else {
    $ojson['NOTUPLOADED'] = true;
}

if(move_uploaded_file($imagepath, $pathtarget)) {
    $ojson['ok move'] = 'ok';
} else {
    $ojson['failed move'] = error_get_last();
}
move\u upload\u file
持续失败,并且
error\u get\u last()
始终在打印:

move_upload_file():无法将“/tmp/php7G5KMy”移动到“/public_html/my_upload/Q9BEsUkDre.jpg”


IsUpload总是正确的。我很困惑,请您帮忙。

/public\u html/my\u upload/…看起来像是来自fs根目录的路径。这绝对是错误的。非常感谢@zerkms先生,我没有意识到我必须做
。/我上传的
哦,我的天啊,它成功了!最好从
\uuuu DIR\uuuu
构建一条路径,这是脚本的绝对路径。现在您可以看到,支持部门甚至没有试图解决问题,而是试图向您销售服务:-SHaha非常感谢您,先生,您对销售部分的看法是正确的。我很乐意接受你的解决方案,所以你可以得到分数。