#php #file-upload
#php #загрузка файла
Вопрос:
У меня есть PHP 7, на котором работает встроенный сервер на моем компьютере с Windows 10, например:
C:Usersuser>php -S 0.0.0.0:3001 -c php.ini
Где index.php является
<?php
error_log(print_r($_FILES));
$new_image_name = "test.mp4";
ob_start();
var_dump($_FILES);
error_log(ob_get_clean(), 4);
move_uploaded_file($_FILES["file"]["tmp_name"], "C:\".$new_image_name);
?>
и php.ini настроен для разрешения больших файлов, поскольку я пытаюсь получить файл фильма.
В любом случае, когда передача файла завершена, это то, что показывает мой var_dump
PHP 7.0.11 Development Server started at Wed Oct 12 14:14:26 2016
Listening on http://0.0.0.0:3001
Document root is C:Usersuser
Press Ctrl-C to quit.
[Wed Oct 12 14:16:07 2016] 1
[Wed Oct 12 14:16:07 2016] array(1) {
["file"]=>
array(5) {
["name"]=>
string(10) "mytest.mp4"
["type"]=>
string(9) "video/mp4"
["tmp_name"]=>
string(44) "C:UsersuserAppDataLocalTempphpD528.tmp"
["error"]=>
int(0)
["size"]=>
int(3604790)
}
}
Однако, C:UsersuserAppDataLocalTempphpD528.tmp никогда не существует и не существует C:test.mp4
Я предоставил полные права доступа к папке Temp .. Я не знаю, что еще попробовать
Комментарии:
1. выполнена какая-либо базовая отладка, например, проверка возвращаемого значения
move_uploaded_file()
? Если вы НЕ переместите этот временный файл, PHP автоматически удалит его, когда скрипт существует, что означает, что если вызов move завершится неудачно, файл в любом случае будет автоматически удален. Вы просто ПРЕДПОЛАГАЕТЕ, что вызов move будет / никогда не завершался неудачей.2. И перемещение почти наверняка завершается неудачей, потому что я очень сомневаюсь, что идентификатор пользователя вашего веб-сервера имеет разрешения на создание
c:test.mp4
в КОРНЕ вашего системного диска.3. Лол. Спасибо, @Marc B. Если я запускаю сервер из командной строки с повышенными правами, он работает. Не стесняйтесь отвечать, и я отмечу, что ass принят