使用PHP的所有文件(如名称、大小和类型)都明显正确,但无法移动到实际文件夹

使用PHP的所有文件(如名称、大小和类型)都明显正确,但无法移动到实际文件夹,php,ubuntu,file-permissions,Php,Ubuntu,File Permissions,我有点困惑,有点头痛,发现上传文件的问题。我有PHP脚本,其中包含一个上传文件的简单代码。以下是我的脚本: $file_path = "doc_student/"; $image = $final_save_dir . $_FILES['uploadFile']['name']; if($_FILES['uploadFile']['error'] > 0): echo "Error: " . $_FILES['uploadFile']['error']. "<br>"; el

我有点困惑,有点头痛,发现上传文件的问题。我有PHP脚本,其中包含一个上传文件的简单代码。以下是我的脚本:

$file_path = "doc_student/";
$image = $final_save_dir . $_FILES['uploadFile']['name'];

if($_FILES['uploadFile']['error'] > 0):
echo "Error: " . $_FILES['uploadFile']['error']. "<br>";
else:
echo "Upload: " .$_FILES['uploadFile']['name'] . "<br>";
echo "Type: " .$_FILES['uploadFile']['type'] . "<br>";
echo "Size: " .($_FILES['uploadFile']['size'] / 1024) . "kb<br>";
echo "Stored in: " .move_uploaded_file($_FILES['uploadFile']['tmp_name'], $file_path . $_FILES['uploadFile']['name']) . "<br>";
endif;
除了我上传的文件没有移动到$file\u path=doc\u student/之外,一切都正常


我的一位朋友告诉我,要给予适当的权限,允许我的文件上传到我下面给出的文件夹,但如何在Ubuntu中给予权限?

使用chown或chmod,chmod-R 777 doc\u sudent很容易,但不安全。chown-R owner.group doc_sudent、owner和group应该是php的运行用户和组

代码中有两个错误

$image=$final\u save\u dir$_文件['uploadFile']['name']; 应该是这样的$image=$file\u路径。basename$_文件['uploadFile']['name'];这是您要上载文件的正确路径的文件名

移动\u上传的\u文件$\u文件['uploadFile']['tmp\u name'],$file\u路径$_文件['uploadFile']['name']应该像这样移动\u上传的\u文件$\u文件['uploadFile']['tmp\u名称'],$image。move_uploaded_file的第二个参数应该是文件名以及要上载文件的路径。这个函数返回布尔值true或false

因此,如果需要,您可以使用以下方法: //检查$\u FILES['uploadFile']['error']值。 切换$\u文件['uploadFile']['error']{ 案例上传\错误\确定: 打破 案例上载\u错误\u否\u文件: 抛出新的RuntimeException“未发送文件”; 案例上传\错误\初始大小: 案例上传错误表单大小: 抛出新的RuntimeException“超出了文件大小限制”; 违约: 抛出新的RuntimeException“未知错误”; }

以下是官方参考资料:

要更改ubuntu上的权限,请使用命令chmod 777
将上述命令中的文件夹名称更改为您正以完整路径上载的文件夹。

检查doc_student directory上的权限使用move_uploaded_file$\u FILES['file'][tmp_name],$file_pathis it owner.group类似于输入权限号,如775或777或其他?ooo。。非常感谢你Syed Sharique。我用我的风格过滤了你的代码,但这是我问你的一个愚蠢的问题。顺便问一下,为什么使用RuntimeException?是为了防止黑客攻击吗?不客气。RuntimeException是PHP5中定义的异常类。看这里。这就像调用trigger_error函数一样。它的唯一目的就是触发自定义消息的错误,仅此而已。如果它解决了你的问题,那么请接受它作为答案。
// You should also check filesize here.
if ($_FILES['uploadFile']['size'] > 1000000) {
    throw new RuntimeException('Exceeded filesize limit.');
}

$file_path = "doc_student/";
$image = $file_path . basename($_FILES['uploadFile']['name']);

 if (!move_uploaded_file($_FILES['uploadFile']['tmp_name'], $image)) {
    throw new RuntimeException('Failed to move uploaded file.');
}

echo "File is uploaded successfully.<br>";
echo "Upload: " .$_FILES['uploadFile']['name'] . "<br>";
echo "Type: " .$_FILES['uploadFile']['type'] . "<br>";
echo "Size: " .($_FILES['uploadFile']['size'] / 1024) . "kb<br>";