PHP - 文件所有权/权限问题 - 上传后的文件无法访问/找不到

时间:2018-05-25 18:23:06

标签: php apache file file-permissions ajax-upload

我正在使用此Simple-Ajax-Uploader插件上传文件,然后我使用This PHP library来处理文件,执行诸如生成随机文件名,调整大小和指定目录以保存文件文件等。

以下是代码:

<?php
require('../classes/class.upload.php');
require('../classes/User.php');

//Process a file uploaded via XMLHttpRequest
$handle = new upload($_FILES['uploadfile']['tmp_name']);
if ($handle->uploaded) {
    $handle->file_new_name_body = User::generateRandomString();
    $handle->image_resize = true;
    $handle->image_x = 360;
    $handle->image_ratio_y = true;
    $handle->process('temp-uploads');
    if ($handle->processed) {
        echo json_encode(array('success' => true, 'newfilename' => $handle->file_dst_name));
        $handle->clean();
    } else {
        exit(json_encode(array('success' => false, 'msg' => $handle->error))); 
    }
}

好吧,该文件将成功上传,但不知何故,它会通过任何网页无法访问,如果我尝试访问浏览器上的“site-name.com/directory-name/filename.jpg”,它也无法访问。它显示404未找到。

我还认为这可能是文件权限问题,但在给上传文件(包括其目录)所有可能的权限之后,它们仍然是404 Not Found。目前,ajax上传的文件在cPanel文件管理器中可见,但在URL中无法访问。

最后,出于好奇,我通过cPanel直接将另一个文件上传到服务器,并且可以访问该文件,但其他文件仍然神秘地无法访问404 Not Found。我还将一个无法访问的文件重命名为test.jpg,但它仍然无法访问。 我试图在这里搜索类似的问题,但找不到。

请问这里出了什么问题?

修改

我发现这是文件所有权权限问题,文件上传的目录以及其中的文件分别具有不同的所有者用户名1128和99。 我已修改问题的标题以包含“文件所有权/权限问题”

此外,我在错误日志中为每个上传的文件重复发现以下消息:

[Sat May 26 09:28:05.584102 2018] [core:error] [pid 9320:tid 140646036481792] [client 209.126.90.118:59372] Caught race condition abuser. attacker: 1128, victim: 99 open file owner: 99, open file: /home/royalsee/public_html/php/MichenoCoop/dashboard/temp-uploads/32_3.JPG, referer: http://michenocoop.com/dashboard/temp-uploads/

2 个答案:

答案 0 :(得分:0)

我知道您已经检查过:

  

可能是文件权限问题,但在提供上传的文件后   包括他们的目录)所有可能的权限,他们仍然   找不到404

但根据S.O的回答What's the meaning of this error message in error log?,问题可能是文件的 所有权

  

错误的权限或所有权也可能触发此错误。我有   通过更改我的应用程序目录的所有权解决它。它是   由root拥有。

此处再次出现与日志文件相同的错误:

https://alexantop.wordpress.com/2013/05/07/caught-race-condition-abuser/

使用相同的解决方案:

  

将文件所有权更改为“用户名”。

您可以检查文件夹的所有权,并尝试将其更改为www-data或可从互联网访问的某些用户。

希望它有所帮助!

答案 1 :(得分:0)

当我联系托管服务提供商的支持时,问题得以解决。

enter image description here

我让他们解释原因是什么,他们回答说:

enter image description here

无论这意味着什么,我都不知道,但是我的问题已经解决了,所以我发布这个来帮助其他可能遇到同样问题的人。我希望它有所帮助。

相关问题