【问题标题】:PHP: When does the temporary uploaded files get deleted?PHP:临时上传的文件什么时候被删除?
【发布时间】:2012-06-23 06:41:00
【问题描述】:

我正在运行 WAMP 服务器。在使用 PHP 上传文件时,我看到了

$_FILES[tmp_name] => string 'C:\wamp\tmp\phpD382.tmp' (length=23)

我去那个文件夹,它是空的。我确保从我的“文件夹选项”中打开了“显示隐藏文件”,但我没有看到它。它究竟在哪里?

除了它什么时候被删除?如果我不移动那个文件?例如,如果我正在上传文件并且文件上传到一半,我决定关闭该浏览器,文件会发生什么情况?服务器何时知道删除该临时文件?

【问题讨论】:

  • 脚本完成后。 "如果文件没有被移走或重命名,它将在请求结束时从临时目录中删除。" php.net/manual/en/features.file-upload.post-method.php
  • @Dagon 如果脚本被中断会发生什么,比如我关闭浏览器或按下后退按钮?
  • 在这两种情况下,文件或上传的文件的任何部分都将被删除
  • @Dagon 除非 ignore_user_abort 已在 API 中设置或已被调用。
  • @PhpMyCoder 我会认为即使在这种情况下关闭浏览器也会停止发送文件。测试它-yup 文件上传停止服务器端无法控制。

标签: php file-upload


【解决方案1】:

如果不希望删除文件,我发现如果将文件“移动”到同一位置,PHP 不会在执行后删除文件。

move_uploaded_file($temporaryFile, $temporaryFile);

【讨论】:

    【解决方案2】:

    如果你不对它们做任何事情,它们将在脚本完成后立即被删除。

    【讨论】:

    • 如何知道脚本何时完成,因为我想在另一个文件夹上应用相同的行为?
    • 这是一个迟到的回复。但它可以帮助其他人。您可以尝试使用 register_shutdown_function 注册回调函数。当脚本结束时调用此函数。当出现致命错误时,脚本也可能结束。这也可以在函数内部捕获,并根据需要采取步骤。
    【解决方案3】:

    一旦您的 PHP 脚本完成执行并重新保存到定义的位置

    使用直接 PHP 的示例,无框架

    http://www.php.net/manual/en/features.file-upload.post-method.php

    $uploaddir = '/var/www/uploads/';
    $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
    
    echo '<pre>';
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
        echo "File is valid, and was successfully uploaded.\n";
    } else {
        echo "Possible file upload attack!\n";
    }
    
    echo 'Here is some more debugging info:';
    print_r($_FILES);
    
    print "</pre>";
    
    ?>
    

    【讨论】:

    • 在某些 WAMP 安装中,您的 $uploaddir 可能类似于 C:/wamp/www/uploads/,而 $_FILES 数组可能使用的是 file,而不是 userfile
    • 考虑到文件未重新保存在定义的位置(例如:读取 excel 文件,获取数据 -> 插入到 db,折腾文件),php 是否会破坏 tmp 文件在脚本的末尾?
    • Nvm找到它:如果文件没有被移走或重命名,它将在请求结束时从临时目录中删除。
    • @gorelative 如果我在 tmp 目录中重命名文件会发生什么?脚本执行完成后是否也会被删除?
    猜你喜欢
    • 2013-05-17
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 2010-09-10
    • 2012-01-04
    • 2016-02-12
    • 1970-01-01
    • 2012-04-11
    相关资源
    最近更新 更多