【问题标题】:LAMP - file doesn't appear under tmp directoryLAMP - 文件没有出现在 tmp 目录下
【发布时间】:2014-07-02 10:41:51
【问题描述】:

我正在使用 HTML 表单上传图片。

当我获得图像的完整路径时,它会输出如下内容:

'/tmp/phpkIv1BY/10259944_770025219687938_1184503840380306483_n.jpg'

但是当我转到/tmp 文件夹时,子文件夹phpkIv1BY 甚至都不存在!这是怎么回事?

【问题讨论】:

  • 可能只是进入你机器的 tmp 文件夹
  • 我如何知道它在哪里?
  • 尝试检查 /tmp 或 /var/tmp 文件夹是否有提到的子文件夹。
  • 他们没有,我已经检查过了。

标签: php directory tmp


【解决方案1】:

这种行为的原因

所有上传的文件都临时存储在

中定义的文件夹位置

(在 php.ini 中)

upload_tmp_dir =

(了解更多信息:http://php.net/upload-tmp-dir

这些临时存储的文件在 php 脚本执行(如前面的回答请求生命周期中所述)完成后不再存在。

在脚本执行时执行以下操作来查看上传的文件。

上传.html

<html>
<body>
    <form action="upload_file.php" method="post"
    enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="Submit">
    </form>
</body>
</html>

上传文件.php

<?php
if ($_FILES["file"]["error"] > 0) {
  echo "Error: " . $_FILES["file"]["error"] . "<br>";
} else {
        $fp=fopen("/tmp/write.log","w+");
        fputs($fp,"Original Name:".$_FILES["file"]["name"].";temporay Name:".$_FILES["file"]["tmp_name"]."\n");
        fclose($fp);
        sleep(50000);
}
?>

通过upload.html上传文件

上传图片后在另一个终端应用tail in /tmp/write.log(因为睡眠时间太长,所以你可以找到图片)

#tail -f /tmp/write.log

将该临时文件复制到任意位置并放置原始图像文件的扩展名

例如我打印的日志行是

原始名称:digits.png;临时名称:/tmp/phpOKlpoK

(需要使用 root 权限执行此操作)

#cp /tmp/phpOKlpoK /home/sandeep/Desktop/file.png

#chown sandeep.sandeep /home/sandeep/Desktop/file.png

所以这是你上传的文件。

( 您可以使用 move_uploaded_file() 而不是执行所有这些步骤来检查上传的图像 )

【讨论】:

    【解决方案2】:

    如果 PHP 可能会为临时上传的文件创建临时文件夹,我找不到任何地方。但可以肯定的是,上传的文件是临时保存的,一旦请求完成,它们就会被删除。因此,如果您认为可以在 /tmp 文件夹中找到一些上传的文件,请三思。

    如果您希望某些上传文件的寿命比请求寿命长,那么您需要使用 move_uploaded_file() 将其移动到安全的地方。

    【讨论】:

    • 使用表单提交文件后,我尝试使用干预图像库通过将 tmp url 传递给 Image::make() 方法来处理它,但它好像无法处理文件。如果我将文件移动到一个文件夹并将其传递给库,它就可以工作。如何使它与 tmp 文件一起使用?我希望这样做,因为我想先将文件作为图像处理,然后才将其移动到上传文件夹(以防它是潜在危险文件)。
    • 您到底想用干预库做什么?
    猜你喜欢
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 2019-03-22
    • 1970-01-01
    • 2016-02-15
    • 2014-04-03
    • 2014-01-02
    相关资源
    最近更新 更多