Forum Webscript.Ru
Программирование => PHP => Тема начата: DJ Fat от 05 Мая 2003, 19:25:35
-
Подскажите, пожалуйста, что нужно добавить в этот upload-скрипт и куда, чтобы при закачке был установлен chmod 777?
Почему возникла эта необходимость? - спросите вы. Дело в том, что файлы, которые закачиваются этим скриптом имеют chmod 600 и не знаю почему, их не получается скачать через FTP-клиент. FlashFXP, к примеру, пишет "Error 550: Permission denied". Также у закаченных этим скриптом файлов невозможно поменять chmod. Однако, остальные операции с закаченными скриптом файлами проходят отлично. Работает загрузка через браузер и т.п. Но через FTP-клиент никак! :(
Мой хостинг-провайдер посоветовал мне следующее:
После закачки файлов устанавливайте скриптом
атрибуты 777 (chmod 777)
Ниже приведён текст скрипта.
$dir="/pub/home/etc";
$counter_fname="counter.num";
if($submit) {
if($_FILES[\'userfile\'][\'type\']=="application/x-zip-compressed") {
if($_FILES[\'userfile\'][\'size\'] < 800000) {
if(is_uploaded_file($_FILES[\'userfile\'][\'tmp_name\'])) {
$num=0;
if (file_exists($counter_fname)) {
$f=fopen($counter_fname,"r");
$num=fread($f,filesize($counter_fname));
fclose($f);
}
$num++;
$fh=fopen($counter_fname,"w+");
fputs($fh,$num);
fflush($fh);
fclose($fh);
if(move_uploaded_file($_FILES[\'userfile\'][\'tmp_name\'], $dir."c".(100000+$num).".zip")) {
echo "Файл закачен.";
} else { echo "Файл не закачен."; }
} else { echo "Файл не закачен."; }
} else { echo "Файл не закачен."; }
} else { echo "Файл не закачен."; }
?>
PS: я чайник, поэтому, если вы захотите мне помочь, напишите, какой кусок кода куда вставить, ибо я в этом разбираюсь очень плохо... :insane:
webprog, на случай, если ты читаешь это сообщение, извини, другого выхода, как попросить помощи на форуме я не нахожу: ты не отвечаешь уже месяц...
-
Дополнительная информация
Получил дополнительную информацию от хостинг-провайдера, возможно, это поможет прояснить ситуацию. Цитирую:
Потому что при закачке файлов по FTP последние получают владельца - ваш uid.
При php -
upload-e закачаный файл получает владельца - uid процесса, его создавшего. А так как php скрипты
запускаются с uid, отличным от вашего, то и файлы наследуют этот uid и вы получаетесь чужим для
них.
Для того, чтобы вы по FTP могли их модифицировать/удалять, нужно после upload-a
назначать им атрибуты 777 скриптом.
-
chmod($dir."c".(100000+$num).".zip",0777)
-
а ещё полезная штука в данном процессе umask (http://www.php.net/umask)
-
nagash
chmod($dir."c".(100000+$num).".zip",0777)
А куда это вставлять?
-
немного неожиданный вопрос
ну поставь после
echo "Файл закачен.";
-
nagash
Спасибо, теперь всё работает. А про "неожиданность" моего вопроса я упомянул в первом сообщении, читай внимательнее:
напишите, какой кусок кода куда вставить