| |
|
|
| | Пишу скрипт загрузки файлов на сервер. При этом в папке '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 - тоесть, "пользователь, не входящий в группу" должен иметь права на запись!
Чем это объяснить и как быть? | |
| |
|
|
| |
|
|
| |
для: 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))
?>
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(13.06.2007 в 19:12)
| | | chmod($exchange->uploadPath . date("d-m-Y"), 0777);
Что характерно, эта строчка не выдавала ошибки..
Суть то я понимаю, я не понимаю почему разработчики так не продумали этот вопрос - в большинстве случаев никчему создавать такую папку (ее потом еще и удалить бывает сложно)
А за move_uploaded_file() благодарю :) | |
| |
|
|
| |
|
|
| |
для: 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.... | |
| |
|
|
| |
|
|
| |
для: 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
>
|
>Что же делать? :(
с этим вопросом прямая дорога к хостеру. | |
| |
|
|
| |
|
|
| |
для: Trianon
(13.06.2007 в 19:37)
| | | Смешно, наверное, но я сам себе хостер | |
| |
|
|
| |
|
|
| |
для: owner
(13.06.2007 в 19:43)
| | | а нахрен Вам тогда Safe mode? | |
| |
|
|
| |
|
|
| |
для: Trianon
(13.06.2007 в 19:45)
| | | Дело в том, что скрипт пишу не для себя, а по просьбе друга. У него - какой то "обычный хостер", и очень сомневаюсь, что там все будет в порядке.. Сам испытывал трудности с правами созданых папок, когда не было сервера..
..safe mode для парочки товарищей, которые на выгодных условиях держат свои сайты у меня. | |
| |
|
|
| |
|
|
| |
для: owner
(13.06.2007 в 19:54)
| | | функция move_uploaded_file обязана переносить загруженный файл в папку с правами 0777.
Если она этого не делает - значит апач, php или система прав на каталоги документов настроены некорректно. Так что у друга вероятно всё будет ок. | |
| |
|
|