Файл формы HTML не загружается

У меня есть HTML-форма следующего вида:

<form id="addTrack" action="/worship/script/upload.php" method="post" enctype="multipart/form-data">
    <label>File:</label>
    <input type="file" name="uploaded" id="addTrackFile"/>
    <label>Key Title: </label>
    <input type="text" name="title" id="addTrackTitle"/>
    <input type="hidden" name="id" id="addTrackId"/><br>
</form>
<button onclick="uploadAddTrack()">Upload</button>
<button onclick="closeAddTrack()">Close</button>

Когда я отправляю форму, файл загружается на сервер правильно, но когда он перенаправляется на сценарий действия PHP, он останавливается при первой ошибке. Затем скрипт сбрасывает переменную $_FILES, которую возвращает как пустой массив. Как вы можете видеть в приведенном ниже коде, он также выводит ошибку, но также выводит пустую строку.

Почему я не получаю файл в массиве $_FILES?

Мой PHP-код:

$id=$_POST["id"];
$name=$_POST["title"];

$name = str_replace(" ","",$name);

$allowed_filetypes = array('.mp3','.m4a','.wav','.wma');

$filename = $_FILES['uploaded']['name'];
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);

$target = "../audio/"; 
$target = $target . $id. "_".$name.$ext; 
$ok=1; 

if ($_FILES['uploaded']['error'] !== UPLOAD_ERR_OK) {
    //------------This is where it gets stopped-----------------//

        var_dump($_FILES);
    echo $_FILES["uploaded"]["error"];
    return;
}

if(!in_array($ext,$allowed_filetypes))
die("This file type is not allowed");

if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) 
{
include("updateDB.php");

header("Location:/worship/cpanel/?autoload=$id");
} 

Размер файла, который я загружаю, составляет 9 МБ.

Моя релевантная информация о php.ini

file_uploads: включен

upload_max_filesize: 25M

upload_tmp_dir: нет значения

max_post_size: 8M


person David    schedule 10.01.2014    source источник
comment
Является ли каталог, который вы загружаете, доступным для записи?   -  person mituw16    schedule 11.01.2014
comment
Я не знаю. Как проверить?   -  person David    schedule 11.01.2014
comment
Вы отправляете форму через ajax или какие триггеры отправляют?   -  person makallio85    schedule 11.01.2014
comment
Зависит от ОС, на которой работает сервер. Если Linux, вы должны перейти в родительский каталог и запустить ls -l . Если это сервер Windows, щелкните правой кнопкой мыши каталог и просмотрите разрешения учетной записи IIS_USR.   -  person mituw16    schedule 11.01.2014
comment
@ mituw16 Разрешения для каталога 0755.   -  person David    schedule 11.01.2014
comment
@AngularAddict Я просто отправляю форму с $("form#addTrack").submit();   -  person David    schedule 11.01.2014
comment
Тогда в этом проблема. В Linux 755 означает доступный для чтения, исполняемый всеми, но доступный для записи только владельцу файла.   -  person mituw16    schedule 11.01.2014
comment
@ mituw16 mituw16 это может быть нормально, если пользователь сети/группы владеет этим каталогом. Это зависит от настройки.   -  person Panama Jack    schedule 11.01.2014
comment
Верно Верно, является ли пользователь сети/группы владельцем каталога?   -  person mituw16    schedule 11.01.2014
comment
@ mituw16 Как мне это проверить?   -  person David    schedule 11.01.2014
comment
Когда вы запустили ls -l, кто был в списке до 755?   -  person mituw16    schedule 11.01.2014
comment
Подожди. Я нашел права доступа к файлам через FTP. Позвольте мне войти в SSH.   -  person David    schedule 11.01.2014
comment
Если он принадлежит кому-либо, кроме веб-сервера, вам необходимо либо изменить права доступа к каталогу на 777, либо с помощью команды chown сделать так, чтобы веб-сервер стал владельцем каталога.   -  person mituw16    schedule 11.01.2014
comment
@David проверь файл PHP.ini. убедитесь, что размер POST больше 8M. потому что это значение по умолчанию, и вы отправляете информацию размером 9 МБ. ; Maximum size of POST data that PHP will accept. post_max_size = 8M   -  person Panama Jack    schedule 11.01.2014
comment
Он говорит, что владелец и группа являются пользователем.   -  person David    schedule 11.01.2014
comment
@Pjack В этом была проблема. Максимальный пост был 8M. Ду лол. Большое вам спасибо за вашу помощь! :) Если вы хотите опубликовать это как ответ, я с радостью проголосую / приму!   -  person David    schedule 11.01.2014
comment
@ Дэвид, хорошо, без проблем. Ответил, чтобы он не попал в очередь без ответа. :)   -  person Panama Jack    schedule 11.01.2014


Ответы (1)


проверьте файл PHP.ini. убедитесь, что размер POST больше 8M. потому что это значение по умолчанию, и вы отправляете информацию размером 9 МБ.

 `; Maximum size of POST data that PHP will accept.

post_max_size = 8M`
person Panama Jack    schedule 10.01.2014