jQuery загрузить I / O ошибка UNIX - PullRequest
0 голосов
/ 05 июля 2010

У меня проблема со скриптом загрузки jQuery, и я не нашел никакого решения.Я интегрировал этот скрипт в свой проект, и все отлично работает на сервере Windows (localhost), но когда я пытаюсь запустить его на сервере UNIX, возникает ошибка ввода-вывода.Это происходит только тогда, когда я пытаюсь загрузить файл, который уже существует в папке загрузки.В Windows файл перезаписывается, но в UNIX появляется ошибка ввода-вывода.

Пожалуйста, если у вас есть какие-либо решения, я буду очень признателен.

Вот код на стороне сервера, который, я думаю, является проблемой (код PHP):

if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetPath = $_SERVER['DOCUMENT_ROOT'].$_REQUEST['folder'].'/';
    $targetFile = str_replace('//', '/', $targetPath).$_FILES['Filedata']['name'];

    if (file_exists($targetFile)) unlink($targetFile);
    copy($tempFile, $targetFile);
    echo "1";
}

Ответы [ 3 ]

0 голосов
/ 05 июля 2010

Прежде всего, вы должны использовать move_uploaded_file вместо копии.

Но, скорее всего, ваша проблема связана с проблемой разрешений.Можете ли вы загрузить любой файл в папку?Вы проверили, что файлы, уже находящиеся в папке (те, которые вы хотите перезаписать), имеют те же разрешения, что и недавно загруженный?Я предполагаю, что вы скопировали файлы в папку с использованием (S) FTP и что у них есть другой владелец / разрешения, поэтому вы не можете перезаписать их.

0 голосов
/ 07 июля 2010

В дополнение к возможным проблемам с разрешениями, упомянутым в paxdiablo и wimvds, также проверьте регистр вашего имени файла и пути. В отличие от Windows, файловые системы Unix чувствительны к регистру.

0 голосов
/ 05 июля 2010

Первые несколько вещей, которые нужно проверить:

  • Какому пользователю принадлежит файл, который существует?
  • Какому пользователю принадлежит каталог, в котором находится файл?
  • Какой пользователь запускает ваш PHP-скрипт?
  • Каковы разрешения для самого файла?
  • Каковы разрешения для каталога, в котором находится файл?

Причина, по которой я задаю эти вопросы, заключается в том, что это может быть простая проблема с разрешениями. Пользователю, выполняющему unlink и создание файла целевого файла, потребуется доступ на запись в каталог. Возможно, что пользователь, который запускает сценарий, , а не тот, кто владеет каталогом или файлом, в этом случае вам, возможно, придется немного открыть разрешения.

Конечно, это только предположение с моей стороны, но это первое, что я бы искал.

...