Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Закачка изображений на сервер с правами 777
Форумы портала PHP.SU » PHP » Программирование на PHP » Закачка изображений на сервер с правами 777

Страниц (1): [1]
 

1. Kubert - 02 Июля, 2010 - 12:00:30 - перейти к сообщению
Есть код:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <form method="post" enctype="multipart/form-data">
  3.     <p>Загрузить файл:&nbsp;&nbsp;
  4.     <input name="file" size="18" type="file" value="">&nbsp;&nbsp;
  5.     <input name="submit" type="submit" value="Загрузить"></p>
  6. </form>
  7.  
  8.  
  9. <?
  10. $file = $_FILES['file']['tmp_name']; //Переменная переданного файла - мой комент
  11. $filename = $_FILES['file']['name']; //Имя файла как я предпологаю - мой комент
  12.  
  13.  $size = filesize ($_FILES['file']['tmp_name']);
  14.  $type = strtolower(substr($filename, 1+strrpos($filename,".")));
  15.  $new_name = pic.'.'.$type;
  16.  
  17.    if (copy($file, "../../img/country/6/".$new_name))
  18.      echo "<img src=\"../../img/country/6/$new_name\"><br><br>";
  19.  
  20. ?>
  21.        
  22.  


Но если администратор сайта захочет поменять картинку, то она не перезапишет, так как права у картинки 644... Как изначально посылать картинку с правами 777?
2. Uchkuma - 02 Июля, 2010 - 13:15:05 - перейти к сообщению
На файл надо ставить права 666, а не 777.
После
PHP:
скопировать код в буфер обмена
  1. if (copy($file, "../../img/country/6/".$new_name))

добавить
PHP:
скопировать код в буфер обмена
  1. chmod("../../img/country/6/".$new_name, 0666);

Но чтобы можно было заменять файлы в этой папке, надо ставить права на папку, а не на файл:
PHP:
скопировать код в буфер обмена
  1. chmod("../../img/country/6", 0777);
3. Kubert - 02 Июля, 2010 - 14:30:37 - перейти к сообщению
спасибо. решено
4. JustUserR - 03 Июля, 2010 - 01:07:17 - перейти к сообщению
Kubert пишет:
Но если администратор сайта захочет поменять картинку, то она не перезапишет, так как права у картинки 644...
В данном случае важным моментом является то что права доступа к файлу определяют именно такие дейтвия с ним как чтение запись и выполнение - в то время как возможность удаления файла определяется правами доступа к папке в которой он лежит Таким образом если пользователь владеет папкой и имеет на нее достаточные права - то он может удалять и заменять в ней любые файлы - если таковым пользователем с доступом является www-data то вы свободно сможете перезаписать загруженный файл
Обратите внимание что такой подход с разделенными правами на изменение файла и его удаления - а также возможность удаления файла пользователем-владельцем папки не имеющих на него соответствующих прав является оправданным - и на самом деле изменение файла это большая привелегия чем его удаление Дело заключается в системе жестких ссылок в linux - ведь подразумевается что когда вы изменяете файл то есть реализуете права на запись то вы на самом деле изменяете его содержимое - а когда удаляете файл то на самом деле удаляется жесткая ссылка на файл которая привязана к каталогу которым вы владеете Ведь по сути каталог является обычным файлов содержащим индексы находящихся в нем файлов - и манипулирование жесткими ссылками в нем не влияет на данные на которые они ссылаются

 

Powered by ExBB FM 1.0 RC1