Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с правами присоздании папки скриптом
 
 автор: owner   (13.06.2007 в 19:02)   письмо автору
 
 

Пишу скрипт загрузки файлов на сервер. При этом в папке 'files' создается папка вида Число-Месяц-Год, и в нее файл загружается.

Вот фрагмент скрипта:


<?php
    
if(!@is_dir($exchange->uploadPath date("d-m-Y")))
    {
        @
mkdir($exchange->uploadPath date("d-m-Y"), 0777);
        
chmod($exchange->uploadPath date("d-m-Y"), 0777);
        
chown($exchange->uploadPath date("d-m-Y"), $exchange->serverUser);
        
chgrp($exchange->uploadPath date("d-m-Y"), $exchange->serverUser);
    }
?>


на что тут же получаю


Warning: chown() [function.chown]: Operation not permitted in /home/www/public_html/ex4/index.php on line 292

Warning: chgrp() [function.chgrp]: Operation not permitted in /home/www/public_html/ex4/index.php on line 293


Затем идет строчка


    if(!copy($_FILES["file"]["tmp_name"], $exchange->uploadPath . date("d-m-Y") . '/' . $name))
    // Вывод сообщения об ошибке


Выводит, разумеется,

Warning: copy() [function.copy]: SAFE MODE Restriction in effect. The script whose uid/gid is 32021/32022 is not allowed to access /home/www/public_html/ex4/files/13-06-2007 owned by uid/gid 99/99 in /home/www/public_html/ex4/index.php on line 309

Warning: copy(files/13-06-2007/ghjkl) [function.copy]: failed to open stream: Permission denied in /home/www/public_html/ex4/index.php on line 309


Суть то проблемы понятна - папка создается с с группой и хозяином "nobody", но как избежать проблемы с записью в такую папку - не имею представления :(

И вообще - папка с правами 777 - тоесть, "пользователь, не входящий в группу" должен иметь права на запись!
Чем это объяснить и как быть?

   
 
 автор: Trianon   (13.06.2007 в 19:12)   письмо автору
 
   для: owner   (13.06.2007 в 19:02)
 

<?php 
    
if(!is_dir($exchange->uploadPath date("d-m-Y"))) 
    { 
        
mkdir($exchange->uploadPath date("d-m-Y"), 0777); 
        
//chmod($exchange->uploadPath . date("d-m-Y"), 0777); 
        //Вы не имеете права менять атрибуты папки. - это может делать только владелец объекта или root
        //chown($exchange->uploadPath . date("d-m-Y"), $exchange->serverUser); 
        // Вы не имеете права менять владельца объекта - это может делать только root
        //chgrp($exchange->uploadPath . date("d-m-Y"), $exchange->serverUser); 
        // Вы не имеете права менять группу объекта - это может делать только владелец объекта или root
    

    
//Максимум что Вы можете сделать - 
if(!move_uploaded_file($_FILES["file"]["tmp_name"], $exchange->uploadPath date("d-m-Y") . '/' $name)) 

?>

   
 
 автор: owner   (13.06.2007 в 19:22)   письмо автору
 
   для: Trianon   (13.06.2007 в 19:12)
 

chmod($exchange->uploadPath . date("d-m-Y"), 0777);

Что характерно, эта строчка не выдавала ошибки..
Суть то я понимаю, я не понимаю почему разработчики так не продумали этот вопрос - в большинстве случаев никчему создавать такую папку (ее потом еще и удалить бывает сложно)

А за move_uploaded_file() благодарю :)

   
 
 автор: owner   (13.06.2007 в 19:27)   письмо автору
 
   для: owner   (13.06.2007 в 19:22)
 

Черт..

Warning: move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect. The script whose uid/gid is 32021/32022 is not allowed to access /home/www/public_html/ex4/files/13-06-2007 owned by uid/gid 99/99 in /home/www/public_html/ex4/index.php on line 309

Что же делать? :(

Напрашивается уж мысль использовать для создания функции FTP....

   
 
 автор: Trianon   (13.06.2007 в 19:37)   письмо автору
 
   для: owner   (13.06.2007 в 19:27)
 


>Warning: move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect. The script whose uid/gid is 32021/32022 is not allowed to access /home/www/public_html/ex4/files/13-06-2007 owned by uid/gid 99/99 in /home/www/public_html/ex4/index.php on line 309
>

>Что же делать? :(
с этим вопросом прямая дорога к хостеру.

   
 
 автор: owner   (13.06.2007 в 19:43)   письмо автору
 
   для: Trianon   (13.06.2007 в 19:37)
 

Смешно, наверное, но я сам себе хостер

   
 
 автор: Trianon   (13.06.2007 в 19:45)   письмо автору
 
   для: owner   (13.06.2007 в 19:43)
 

а нахрен Вам тогда Safe mode?

   
 
 автор: owner   (13.06.2007 в 19:54)   письмо автору
 
   для: Trianon   (13.06.2007 в 19:45)
 

Дело в том, что скрипт пишу не для себя, а по просьбе друга. У него - какой то "обычный хостер", и очень сомневаюсь, что там все будет в порядке.. Сам испытывал трудности с правами созданых папок, когда не было сервера..

..safe mode для парочки товарищей, которые на выгодных условиях держат свои сайты у меня.

   
 
 автор: Trianon   (13.06.2007 в 19:58)   письмо автору
 
   для: owner   (13.06.2007 в 19:54)
 

функция move_uploaded_file обязана переносить загруженный файл в папку с правами 0777.
Если она этого не делает - значит апач, php или система прав на каталоги документов настроены некорректно. Так что у друга вероятно всё будет ок.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования