Ошибка Real Ajax Uploader: невозможно записать в файл

Я строю сайт, который требует возможность загружать большие файлы .wav. Я подумал, что лучший способ загрузить эти файлы — через плагин jQuery, который может распределять данные на сервере. Я выбрал Real Ajax Uploader сделать это.

Я собрал следующее, и он отлично работает для небольших файлов:

$('.demo').ajaxupload({
url : '/upload.php',
remotePath: '/remote/path/',
maxFiles: 1,
maxFileSize: '250M',
});

Проблема возникает, когда у меня есть файл большего размера, который включает в себя «чанкинг». По какой-то причине скрипт продолжает выдавать мне эту ошибку:

Cannot write on file.

Я проследил это до этого места в файле upload.php:

...
//start of the file upload, first chunk
if ($currByte == 0) {
$tempFile           = tempnam($this->tempPath, 'axupload');
$this->tempFileName = basename($tempFile);
}

// some rare times (on very very fast connection), file_put_contents will be unable to write on the file,
// so we try until it writes for a max of 5 times
$try = 5;
while (file_put_contents($tempFile, $fileChunk, FILE_APPEND) === false && $try > 0) {
usleep(50);
$try--;
}

//if the above fails then user cannot write file due to permission or other problems
if (!$try) {
$this->message(-1, 'Cannot write on file.');
}
...

Я предположил, что это означает, что $tempFile не было доступно для записи, поэтому я добавил этот бит:

...
//start of the file upload, first chunk
if ($currByte == 0) {
$tempFile           = tempnam($this->tempPath, 'axupload');
$this->tempFileName = basename($tempFile);
}

chmod($tempFile, 0755);
...

Я попробовал это снова, и у меня все еще была проблема, поэтому я изменил права доступа к / tmp на 755, думая, что это может быть так. Опять ничего.

Я мог бы попытаться просто изменить местоположение моего каталога / tmp и получить более доступную для записи среду, но если есть более простое решение, я бы предпочел пойти с этим.

Спасибо.

1

Решение

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

php_value upload_max_filesize 10M
php_value post_max_size 10M
php_value max_input_time 300
php_value max_execution_time 300

обновите все вышеперечисленные настройки в соответствии с вашими требованиями и после этого перезапустите сервер и повторите попытку.

0

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

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