Не могу загрузить файл в Apache 2.2

Apache / 2.2.15 (Win32) PHP / 5.3.2

Я пытаюсь загрузить файл в Apache, и мой PHP-скрипт сообщает мне, что все идет хорошо (код состояния 0), но файл не находится в каталоге temp. Ответ PHP всегда приходит немедленно, независимо от размера файла. В журнале ошибок PHP вообще нет ошибок.

Сервер Apache работает под собственной учетной записью пользователя с полным доступом к папкам журналов и документов.

php.ini

file_uploads = On
upload_tmp_dir =
upload_max_filesize = 10M
upload_tmp_dir="C:\WINDOWS\Temp"

send.html

<!DOCTYPE html>
<html>
<body>

<form enctype="multipart/form-data" action="upload.php" method="post" >
<input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>

</body>
</html>

upload.php

<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.

echo '<pre>';
print_r($_FILES);
echo '</pre>';
?>

Результат выглядит так

Array
(
[userfile] => Array
(
[name] => strings.lua
[type] => application/octet-stream
[tmp_name] => C:\WINDOWS\Temp\phpC0.tmp
[error] => 0
[size] => 9935
)

)

Файл C: \ WINDOWS \ Temp \ phpC0.tmp не существует.

Есть ли какие-то другие соображения / конфигурации, которые я пропустил?
Сервер Apache работает с PHP более 5 лет и отлично работает во всех других аспектах. Я не могу обновить Apache или PHP до более новой версии, потому что это приложение в производстве, и клиент не будет рисковать обновлением.

0

Решение

Временный файл существует только до конца вашего сценария PHP upload.php, Это действительно временно.

Вы должны переместить файл сразу, используя move_uploaded_file:

http://www.php.net/move_uploaded_file

Что-то вроде:

$savePath = "path/where/you/really/wantit/" . $_FILES['userfile']['name'];

move_uploaded_file($_FILES['userfile']['tmp_name'], $savePath);

По этой ссылке:

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

Файл будет удален из временного каталога в конце запроса, если он не был удален или переименован.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]