You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kali Linux XAMPP环境下PHP move_uploaded_file无报错不生效排查

Kali Linux XAMPP PHP文件上传失效问题解决方案

1. 核心代码错误

你写的move_uploaded_file函数参数使用错误,这是最直接的失效原因:

该函数第一个参数必须是上传后服务端生成的临时文件路径,也就是你提前定义的$tmp_name变量,但你错误传入了新生成的文件名$newFileName,系统找不到对应文件自然无法移动。

错误行修正为:

move_uploaded_file($tmp_name, $fileDestination);

另外你提供的代码末尾多了一个多余的},直接删除即可避免语法错误。

2. 环境配置类问题排查

如果修正代码后仍无法正常上传,按以下顺序排查:

  • 检查uploads目录权限:XAMPP在Kali Linux中默认以daemon用户运行,需确保你的上传目录有可写入权限,可执行命令配置:
    # 临时赋权测试用
    sudo chmod 777 /opt/lampp/htdocs/你的项目路径/uploads
    # 生产环境更安全的赋权方式
    sudo chown daemon:daemon /opt/lampp/htdocs/你的项目路径/uploads
    
  • 检查前端表单配置:提交文件的form标签必须添加enctype="multipart/form-data"属性,否则文件不会被正常上传到服务端,示例如下:
    <form action="" method="post" enctype="multipart/form-data">
    
  • 检查PHP配置项:打开XAMPP的php.ini配置文件,确认如下配置:
    • file_uploads = On 已开启文件上传功能
    • upload_max_filesize 数值大于你上传的文件大小,默认通常为2M
    • post_max_size 数值大于upload_max_filesize的值
  • 开启调试错误提示:在代码开头添加两行配置,就能显示原本被隐藏的报错信息,方便定位问题:
    <?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    // 后面接你原来的业务代码
    

3. 其他注意事项

使用header("Location:xxx")跳转之前不能有任何输出内容,包括代码开头的空格、换行、HTML标签,否则会引发头输出已发送的报错,跳转逻辑失效。

修正后的完整代码示例:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
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'];

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

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

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

内容的提问来源于stack exchange,提问作者user14416725

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:09:04