chmod & copy

Space

Новичок
chmod & copy

суть: существует некий файл, с атрибутами chmod 644,
мне надо вместо него поместить новый, т.е. старый удалить.

после отправки файла, выдается ошибка:

Warning: Unable to create 'photos/girls/466/1.jpg': Permission denied in /home/spy/public_html/brides/my_param.php on line 284


код:


Код:
//Назначение: Удаление файлов и копирование вместо них новых.
if(!empty($photor1_name))
  {
	$file = "photos/".$user_gender."/".$user_id."/1.".strtolower($photo1_prop)."";
@chmod("$file", 777);   

	if (is_dir($file))
	{
	RmDirR ($file);
	}
	list($photo_n,$rass) = split('[.]',$photor1_name);
	copy($photor1, "photos/".$user_gender."/".$user_id."/1.".strtolower($rass)."");
  }

И почему не изменяется chomd файла на 777? в строке @chmod("$file", 777);
 

Georgy

Guest
по поводу чмода неизменяемого - я тож с этой проблемой сталкивался. Тут, на сколько я понимаю, суть в том, что php работает от группы www (обычно) ну а владельцем твих файлов являешься ты (group users) ну и php просто не имеет права менять пермишенсы на файле, владельцем которого не являеца и/или чмод не позволяет ей это сделать. в общем круг замкнутый. Можно чмод вручную менять, но это отстой полный.

тут я так и не нашел лучшего пути, кроме как @unlink($oldfile) и copy($_FILES['tmpname'],$oldfile);

вот...
 

Space

Новичок
блин. не работает.

<?
if(!empty($photor1_name))
{
$file = "photos/".$user_gender."/".$user_id."/1.".strtolower($photo1_prop)."";
@unlink($file);

list($photo_n,$rass) = split('[.]',$photor1_name);
copy($photor1, "photos/".$user_gender."/".$user_id."/1.".strtolower($rass)."");

}
?>
 

woland

Guest
@chmod($file,0777);

Переменные брать в кавычки не нужно.
 

Space

Новичок
все равно не работает. тут нужен другой подход...
я же меняю chmod через брозверь? так. соответственно в файле-исполнителе надо как то прописать права на исполнение... :(
 

ru-design

Guest
Сразу хочу спросить можно ли прописать юзера или права, под которыми будет писать файлики апача в .htaccess?
 

woland

Guest
>я же меняю chmod через брозверь?
Ты о чём, вообще?
 

BigDaddy

Guest
тут я так и не нашел лучшего пути, кроме как @unlink($oldfile) и copy($_FILES['tmpname'],$oldfile);
Если апач не имеет права записи на файл, пхп скрипт не сможет ни стереть, ни изменить файл, не сможет изменить права на него.
Если файл аплоадится по фтп для последующих изменений через пхп скрипты, надо конфигурить фтп сервер так, чтобы файлы ложил с соответствующими правами.
 

Georgy

Guest
а вот с конфигурацией обычно проблемы.

на самом деле именно такоим способом (см. @unlink()) я и решил оную проблему. Бред конечно, но решил.
 
Сверху