Автор Тема: создание директории  (Прочитано 6699 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн WG

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 39
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
создание директории
« : 05 Ноября 2004, 16:49:20 »
Необходимо создать директорию и загрузить туда файл.
Директория создается, но возхникает ошибка при загрузке файла!
Хотя по отдельности все работает нормально? В чем может быть причина?

$root=$HTTP_SERVER_VARS[\'DOCUMENT_ROOT\'];
$pathdir=$root.\'Pic/Head\';
$pathdir=trim($pathdir);
$oldmask=umask(0);
@mkdir("$pathdir", 0777) or die("Ошибка при создании директории");
umask($oldmask);

if(!mkdir("$pathdir", 0777))
{
echo"Ошибка!";
exit;
}
 

   $userfile=$HTTP_POST_FILES[\'small\'][\'tmp_name\'];
   $userfile_name=$HTTP_POST_FILES[\'small\'][\'name\'];
   $userfile_size=$HTTP_POST_FILES[\'small\'][\'size\'];
   $userfile_error=$HTTP_POST_FILES[\'small\'][\'error\'];
       
   if ($userfile_name!="")
     {    
      if ($userfile_error > 0)
        {
          echo "Проблема:";
          switch($userfile_error)
            {
              case 1: echo \' размер файла больше допустимого значения на сервере\'; break;
              case 2: echo \' размер файла больше установленного\'; break;
              case 3: echo \' загружена только часть файла\'; break;
              case 4: echo \' файл не загружен\'; break;
            }
          exit;
        }
       $upfile=\'../Pic/Head/\'.\'line.jpeg\';
       if (is_uploaded_file($userfile))
         {
           if (!move_uploaded_file($userfile, $upfile))
             {
               echo "Проблема: невозможно переслать файл в каталог назначения";
               exit;
             }
         }
       else
         {
           echo "Проблема: возможна атака через загрузку файла. Файл: ".$userfile_name;
           exit;
         }
    echo "Файл успешно загружен
";
       
    }
  else  
    {
      echo "Вы не загрузили файл";
    }

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
создание директории
« Ответ #1 : 05 Ноября 2004, 17:15:32 »
Цитировать
но возхникает ошибка при загрузке файла

Текст покажешь?

Оффлайн WG

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 39
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
создание директории
« Ответ #2 : 05 Ноября 2004, 18:47:06 »
Проблема: невозможно переслать файл в каталог назначения

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
создание директории
« Ответ #3 : 05 Ноября 2004, 18:52:30 »
Скорее всего, прав не хватает.
error_reporting(E_ALL);
ini_set(\'display_errors\', 1);
поставь временно вверху скрипта,
тогда должно быть видно warning.

Оффлайн WG

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 39
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
создание директории
« Ответ #4 : 05 Ноября 2004, 19:45:59 »
выдает ошибку:
Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 1809 is not allowed to access /public_html/Pic/Head owned by uid 3 in /public_html/upl/upload.php on line 27

Оффлайн WG

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 39
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
создание директории
« Ответ #5 : 05 Ноября 2004, 19:51:12 »
Вообще возникает вопрос может ли php-скрипт работать с созданными им директориями????

Оффлайн WG

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 39
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
создание директории
« Ответ #6 : 05 Ноября 2004, 21:10:46 »
Нашел один из вариантов решения проблемы: вставка perl-скрипта, заместо создания директории на php.

В первом листинге заменил

$oldmask=umask(0);
@mkdir("$pathdir", 0777) or die("Ошибка при создании директории");
umask($oldmask);

на

virtual("../cgi-bin/createdir.pl?dir=$pathdir");

Код createdir.pl

#!/usr/bin/perl
print "Content-type: text/html\\n\\n";
@pairs = split(/&/, $ENV{\'QUERY_STRING\'});
foreach $pair (@pairs){
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
$newdir = $FORM{\'dir\'};
umask 0;
mkdir $newdir, 0777;

1;

Оффлайн Walery

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
создание директории
« Ответ #7 : 14 Декабря 2004, 12:38:58 »
У меня та же проблема, но на хостинге не дают Перл. Если делаю move_uploaded_file в директорию, созданную руками по ФТП (с выставленными на нее правами 0777), работает как часы.
А если добавляю фотки к новому, скажем, дизелю, скрипт успешно создает папку с правами 0777, а вот move_uploaded_file он в нее сделать никак не может (хотя и перемещаю по абсолютным путям).
Пытался сервак заставить залить темповый файл на себя по второму разу через ФТП — получаю Call to undefined function ftp_connect (не работают ftp_ функции, значит).
Помогите, чем можете...
Я медленно запрягаю и не всегда быстро еду

Оффлайн frontera

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.alros.ru
создание директории
« Ответ #8 : 14 Декабря 2004, 13:08:42 »
а после создания директория не блокируется ли php до завершения скрипта? а?
может какой нить closedir попробовать?

Потому, что я пробовал создать директорию, и положить в нее файл (правда не залить а создать нулевой, ну или с любым текстом - все работало нормально)

Оффлайн Walery

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
создание директории
« Ответ #9 : 14 Декабря 2004, 14:46:14 »
umask(0);
mkdir($uploaddir,0777);
$dir=opendir($uploaddir);
closedir($dir);
move_uploaded_file(...);
--тот же Warning и файл все равно не заливается
Я медленно запрягаю и не всегда быстро еду

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28