【问题标题】:save_uploaded_file in php is not working despite the code not having errors尽管代码没有错误,但 php 中的 save_uploaded_file 不起作用
【发布时间】:2021-09-24 11:53:10
【问题描述】:

我在 kali linux 上运行 xampp php 服务器。我尝试保存通过 POST 方法上传的文件,但它不起作用。有人可以看到错误吗?

<?php
if(isset($_POST['submit'])){
$file = $_FILES['file'];
$name = $_FILES['file']['name'];
$tmp_name = $_FILES['file']['tmp_name'];
$size = $_FILES['file']['size'];
$error = $_FILES['file']['error'];

//explode from panctuation
$tempExtension = explode('.', $name);
$fileExtension = strtolower(end($tempExtension));

$isAllowed = array('jpg', 'jpeg', 'png', 'pdf');

if (in_array($fileExtension, $isAllowed)) {
    //zero is no error 1 is error
    if ($error === 0) {
        if ($size < 100000) {
            $newFileName = uniqid('',true) . "." . $fileExtension;
            $fileDestination = "uploads/" . $newFileName;
            move_uploaded_file($newFileName, $fileDestination);
            header("Location: index.php?uploadedsuccessfully");
        }else{
            echo "Your size is too big";
        }
    }else{
        echo "There was an error. Try again";
    }
} else{
    echo "Your file type is not accepted";
}

} ?>

【问题讨论】:

  • 首先要检查的是表单编码:php.net/manual/en/features.file-upload.post-method.php
  • “不工作”在这里说起来真的不明智。这并没有告诉我们实际发生的事情。您是否收到任何您试图在此处回显的错误消息,如果有,是哪一个?如果不是,则首先验证它进入了哪个 if/else 分支,从最上面的分支开始,制作一些调试输出。
  • 文件没有被保存。即使我尝试写入文本文件并且无法创建或保存它们。

标签: php xampp backend web-development-server


【解决方案1】:

请检查上传文件夹权限,应该是777 或查看 apache2 错误日志了解更多详情

【讨论】:

  • 文件夹权限一般应该是755,文件权限是644。777给了任何人做任何事情的权限,这是一个很大的安全隐患。 linuxhandbook.com/chmod-command
  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
最近更新 更多