PHP - 文件 ownership/permission 问题 - 上传的文件在上传后无法 accessed/not 找到
PHP - File ownership/permission issue - Uploaded file cannot be accessed/not found after it was uploaded
我正在使用这个 Simple-Ajax-Uploader plugin to upload files, then I used 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。
我已经修改了问题的标题以包括 "File ownership/permission issue".
此外,我在错误日志中为每个上传的文件重复发现以下消息:
[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/
我知道你已经检查过了:
could be file permission issues, but after giving the uploaded files
including their directory) all possible permissions, they are still
404 Not Found
但根据这个 S.O 答案 What's the meaning of this error message in error log?,也许问题出在文件的 所有权 :
Bad permission or ownership can also trigger this error. I have
resolved it by changing ownership of my application directory. It was
owned by root before.
这里又出现了与日志文件中相同的错误:
https://alexantop.wordpress.com/2013/05/07/caught-race-condition-abuser/
同解法:
Change the files ownership to “username”.
您能否检查 文件夹 的所有权并尝试将其更改为 www-data
或可从 Internet 访问的某些用户。
希望对您有所帮助!
当我联系托管服务提供商的支持时,问题已解决。
我请他们解释原因,他们这样回答:
不管这意味着什么,我不知道,但是我的问题已经解决了,所以我发布这篇文章是为了帮助可能遇到同样问题的其他人。希望对你有帮助。
我正在使用这个 Simple-Ajax-Uploader plugin to upload files, then I used 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。 我已经修改了问题的标题以包括 "File ownership/permission issue".
此外,我在错误日志中为每个上传的文件重复发现以下消息:
[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/
我知道你已经检查过了:
could be file permission issues, but after giving the uploaded files including their directory) all possible permissions, they are still 404 Not Found
但根据这个 S.O 答案 What's the meaning of this error message in error log?,也许问题出在文件的 所有权 :
Bad permission or ownership can also trigger this error. I have resolved it by changing ownership of my application directory. It was owned by root before.
这里又出现了与日志文件中相同的错误:
https://alexantop.wordpress.com/2013/05/07/caught-race-condition-abuser/
同解法:
Change the files ownership to “username”.
您能否检查 文件夹 的所有权并尝试将其更改为 www-data
或可从 Internet 访问的某些用户。
希望对您有所帮助!
当我联系托管服务提供商的支持时,问题已解决。
我请他们解释原因,他们这样回答:
不管这意味着什么,我不知道,但是我的问题已经解决了,所以我发布这篇文章是为了帮助可能遇到同样问题的其他人。希望对你有帮助。