LAMP — файл не отображается в каталоге tmp

#php #directory #tmp

#php #каталог #tmp

Вопрос:

Я загружаю изображение, используя HTML-форму.

Когда я получаю полный путь к изображению, он выводит что-то вроде этого:

'/tmp/phpkIv1BY/10259944_770025219687938_1184503840380306483_n.jpg'

но когда я захожу в /tmp папку, подпапка phpkIv1BY даже не существует! Что здесь происходит?

Комментарии:

1. Возможно, он просто отправляется в папку tmp вашего компьютера

2. Как мне узнать, где он находится?

3. Попробуйте проверить, есть ли в папках /tmp или / var / tmp упомянутая подпапка.

4. Они этого не делают, я уже проверил.

Ответ №1:

Причина такого поведения

Все загруженные файлы временно хранятся в папке, указанной в

(В php.ini)

upload_tmp_dir =

(Подробнее об этом:http://php.net/upload-tmp-dir)

Эти временно сохраненные файлы больше не существуют после завершения выполнения этого php-скрипта (как указано в предыдущем сроке службы запроса ответа).

Выполните следующие действия, чтобы просмотреть загруженный файл во время выполнения скрипта.

upload.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>
  

upload_file.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 в /tmp/write.войдите в систему после загрузки изображения (поскольку время ожидания слишком велико, чтобы вы могли найти изображение)

#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() .

Комментарии:

1. Как только файл отправлен с помощью формы, я пытаюсь обработать его с помощью библиотеки изображений вмешательства, передавая Image::make() методу tmp URL, но он действует так, как будто он не может обработать файл. Если я перемещаю файл в папку и передаю его в библиотеку, это работает. Как мне заставить его работать с файлом tmp? Я хочу сделать это, потому что я хочу сначала обработать файл как изображение, и только затем переместить его в папку загрузки (на случай, если это потенциально опасный файл).

2. Что именно вы хотите сделать с библиотекой вмешательства?