Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Перемешение загруженного файла


Автор: usverishe 30.8.2006, 07:11
Всем здасте, есть такая проблема, файл грузиться на сервер, сохраняеться во временной дериктории, но никуда двигаться оттуда не хочет, помогите плз.
Код

<?
      $newfilename = '1.txt';
      if (@is_uploaded_file($_FILES['myfile']['tmp_name'])) {
         echo '<p>Копирование файла '.$newfilename;
         if (! move_uploaded_file($_FILES['myfile']['tmp_name'], $newfilename)){
             echo '<p>Файл загружен, но не перемещен в '.$newfilename;
         }else{   echo '<p>Файл перемещен в файл '.$newfilename;
         }
      } else {    echo '<p><font color=red>Не удается загрузить файл. '.$errortext[$_FILES['myfile']['error']].'</font>';
      }
   }else{
      echo '<p><font color=red>Не указано имя файла!</font>';
   }
}
?>


И ещё вот что обнаружил, что означают вот эти ошибки? 
Warning: move_uploaded_file(1.txt) [function.move-uploaded-file]: failed to open stream: Permission denied in /www2/*/site/1.php on line 29

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/var/tmp/phpqq0Ql9' to '1.txt' in /www2/*/site/1.php on line 29

Автор: Bikutoru 30.8.2006, 09:09
Цитата(usverishe @  30.8.2006,  08:11 Найти цитируемый пост)
Permission denied in /www2/*/site/1.php 

Скорее всего нет прав на запись имеyно в этот каталог, поэтому переместить туда файл и не получается. Нужно добавить к этому каталогу права на запись или поменять путь (через $newfilename) на такой, куда писать можно

Автор: Alone 30.8.2006, 09:43
Цитата

$newfilename = '1.txt';

Так не корректно. Нужно описАть абсолютный путь к файлу, желательно от корня файловой системы, для гарантии. Ибо если копировать с относительным путем - можно получить непредсказуемые результаты.

правильно будет так: $newfilename = $path.'/1.txt';
где $path определена ранее, и похожа на что то вроде $path = '/var/www/vhosts/my_site/upload_dir';
Естественно, на папку должны быть права на запись для пользователя/группы , которые обслуживаются веб сервисами.


В принципе, Bikutoru сказал тоже самое smile
(я пришел из RSS канала, и не глянул на пред. пост smile )

Автор: usverishe 30.8.2006, 11:14
пасибо большое, а как назначить права на папку, в смысле я знаю, что через chmod(), но почему-то мне выдаёться ошибка  smile 

Вот такая :

Warning: chmod() [function.chmod]: Operation not permitted in /www2/*/1.php on line 4


Автор: Alone 30.8.2006, 11:56
Ты chmod  пытаешься использовать из пхп? smile))
Так нельзя! chmod нужно использовать от более привелигированного пользователя (root или root_group)

Автор: usverishe 30.8.2006, 12:19
Э-эээ а если в переводе на Русский, для особо одарённых?  smile 

Автор: Alone 30.8.2006, 12:50
Ну, в некоторой степени я ошибся. Но вот пример http://phpclub.net/manrus/f/chmod.html

Автор: usverishe 30.8.2006, 12:57
спасибо конечно большое, просто я уже раз десять это перечитал  smile , мне не понятно только одно, если я заливаю файлы через total commander, значит и их права менять имеет право только он?!  smile 

Автор: Alone 30.8.2006, 15:37
нет.
права на доступ имеет право менять владелец этого файла(каталога)
Просто есть права для владельца, для группы, и для остальных. Тебе особо сейчас на этом заморачиваться не стоит. Почитай на досуге Робачевского.
Дело обстоит обычно проще. Владельцем файла является пользователь, которым ты копируешь файлы на сервер(фтп логин), а при исполнении скрипта,  доступ к нему идет от другого пользователя (www or apache or ...) поэтому из скрипта ты не можешь изменять права, так как пхп не владелец этого файла. Обычно он просто входит в группу доступа. но не более того.

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

Автор: usverishe 31.8.2006, 11:48
Alone, огромнейшее спасибо, за такой подробный ответ!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)