#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. Что именно вы хотите сделать с библиотекой вмешательства?