После загрузки файлов они не скачиваются, хоть _точно_ закачаны нормально. Пример, страница: http://bbs.jumangee.net/node/85
там в аттаче файл. Файлы закачанные в каталог files _вручную_ нормально скачиваются. Больше того, если файлы заменить (по фтп заменить вручную) - файлы будут нормально скачиваться. Удалось выяснить, что проблема скорее всего в том, что файлам устанавливается правильный владелец, но не правильная группа (какая-то "wheel" а должна быть "nobody"). Раньше, на 5.* версии таких проблем небыло. Похоже проблема появилась после обновления до 6ки. Все обновления установлены. Ковыряние в настройках ни к чему не привели.
Пожалуйста помошите хотябы направлением - куды копать
Хостинг: агава (проблем с друпалом раньше небыло)
PHP 4.3.9
MySQL 4.1
Комментарии
спросите у хостера не включен ли save mode для php
phpinfo() говорит что выключен
phpinfo() говорит что выключен
Извините, глюк какой-то, 3 раза один и тот же ответ добавился....
Ну неужели никто с такой проблемой не сталкивался!?
Ну понятно же что проблемы с правами(овнером) на каталог(файлы в) files,
проверте не приватный ли у вас способ загрузки файлов (настраивается в admin/settings/file-system) ...
по идее файлы загруженные upload-ам друпала от имени апача должны быть доступны для скачивания через тот же апач ...
Дык в том-то и дело, что _должно_ быть нормально, но не нормально!
Способ загрузки - публичный. В files лежит .htaccess с непонятным содержимым, он может на это повлиять?
Вот что ответили в саппорте агавы:
Так что, похоже, проблема в самом способе забирания файлов из временного каталога
В файле includes/file.inc
Было:
// This overcomes open_basedir restrictions for future file operations.
$file->filepath = $file->destination;
if (!move_uploaded_file($_FILES['files']['tmp_name'][$source], $file->filepath)) {
form_set_error($source, t('File upload error. Could not move uploaded file.'));
watchdog('file', 'Upload error. Could not move uploaded file %file to destination %destination.', array('%file' => $file->filename, '%destination' => $file->filepath));
return 0;
}
Сделал:
// This overcomes open_basedir restrictions for future file operations.
$file->filepath = $file->destination;
if (!copy($_FILES['files']['tmp_name'][$source], $file->filepath)) {
form_set_error($source, t('File upload error. Could not move uploaded file.'));
watchdog('file', 'Upload error. Could not move uploaded file %file to destination %destination.', array('%file' => $file->filename, '%destination' => $file->filepath));
return 0;
}
unlink($_FILES['files']['tmp_name'][$source]);
Вроде бы заработало
Это уже как традиция - отвечать на свои же вопросы, итак,
Из документации по использованию функции move_uploaded_file():
Т.е. заменять move_uploaded_file надо, но, это ж по-сути до следующего обновления!
Вам надо было просто настроить (и создать) темповую дирректорию внутри "своего" выделенного хостером пространства, и соответственно прописать его в настройках /admin/settings/file-system
Не катит. Временный каталог был указан как вы говорите, это не помогает
а кто владелец:группа у этой дирректории ( в смысле tmp)
владелец tmp-а как раз root:wheel