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

PHP中move_uploaded_file函数无法正常运行问题求助

解决PHP move_uploaded_file失败且$_FILES["fileToUpload"]["tmp_name"]为空的问题

首先得明确:$_FILES["fileToUpload"]["tmp_name"]为空,说明文件根本没完成上传环节,move_uploaded_file自然无法执行,这才导致页面跳转到错误地址。下面是一步步排查和解决的方法:

1. 检查表单的enctype属性

这是最容易忽略的关键!如果你的表单没有设置enctype="multipart/form-data",服务器根本不会接收上传的文件。确保表单代码是这样的:

<form method="POST" enctype="multipart/form-data" action="你的上传处理脚本路径">
    <input type="file" name="fileToUpload">
    <button type="submit">上传</button>
</form>

2. 验证PHP上传配置限制

如果文件大小超过了PHP的配置上限,上传会直接失败,tmp_name也会为空。你可以通过以下方式检查:

  • 在代码里添加echo ini_get('upload_max_filesize') . '<br>' . ini_get('post_max_size');,查看当前的上传大小限制
  • 确保post_max_size的值大于upload_max_filesize(因为POST请求的总大小包括文件和其他表单数据)
  • 如果需要调整,修改php.ini文件或者在.htaccess里设置(如果服务器允许的话):
    upload_max_filesize = 10M
    post_max_size = 12M
    

3. 检查表单文件输入的name属性

确认你的文件输入框的name属性确实是fileToUpload,和代码里$_FILES["fileToUpload"]的键完全一致。如果name写错了(比如写成fileupload),那$_FILES里就不会有对应的字段。

4. 查看上传错误码

PHP会通过$_FILES["fileToUpload"]["error"]返回上传失败的具体原因,你可以在代码里先打印这个值来定位问题:

session_start();

// 先检查上传错误
if (isset($_FILES["fileToUpload"])) {
    $errorCode = $_FILES["fileToUpload"]["error"];
    if ($errorCode !== UPLOAD_ERR_OK) {
        // 打印错误码对应的说明
        $errorMessages = [
            UPLOAD_ERR_INI_SIZE => '文件超过upload_max_filesize限制',
            UPLOAD_ERR_FORM_SIZE => '文件超过表单设置的MAX_FILE_SIZE限制',
            UPLOAD_ERR_PARTIAL => '文件仅部分上传',
            UPLOAD_ERR_NO_FILE => '未选择上传文件',
            UPLOAD_ERR_NO_TMP_DIR => '找不到临时文件夹',
            UPLOAD_ERR_CANT_WRITE => '无法写入临时文件',
            UPLOAD_ERR_EXTENSION => 'PHP扩展阻止了文件上传'
        ];
        echo '上传失败原因:' . ($errorMessages[$errorCode] ?? '未知错误');
        exit;
    }
}

// 后续的文件处理逻辑...

5. 检查临时文件夹权限

PHP需要将上传的文件先保存到临时目录,如果这个目录没有读写权限,也会导致tmp_name为空。你可以用echo sys_get_temp_dir();查看当前临时目录,然后确认该目录对PHP运行的用户(比如www-data)有读写权限。

按照上面的步骤排查,应该能找到问题所在,解决后tmp_name就会有值,move_uploaded_file也能正常执行了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:37:39