За последние 24 часа нас посетили 49897 программистов и 1400 роботов. Сейчас ищут 1024 программиста ...

настройка linux для загрузки файла.

Тема в разделе "PHP для новичков", создана пользователем zvenophp, 19 авг 2010.

  1. zvenophp

    zvenophp Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    62
    Симпатии:
    0
    Необходимо настроить связку пхп и апач для загрузки файлов на сервак (ОС OpenSuSe). Есть такой код
    PHP:
    1.  
    2. if ($_FILES['userfile']['error'] > 0)
    3. {
    4. echo 'Проблема: ';
    5. switch ($_FILES['userfile']['error'])
    6. {
    7. case 1: echo 'размер файла больше upload_max_filesize'; break;
    8. case 2: echo 'размер файла больше max_file_size'; break;
    9. case 3: echo 'загружена только часть файла'; break;
    10. case 4: echo 'файл не загружен'; break;
    11. }
    12. }
    13. // Проверка, имеет ли файл правильный MIME-тип?
    14.  
    15. if ($_FILES['userfile']['type'] != 'text/html')
    16. {
    17. echo 'Проблема: файл не является текстовым';
    18. }
    19. // Извлекаем имя
    20. $filname = $_FILES['userfile']['name'];
    21. // Проверяем на 0
    22. if (filesize ($filname ) == 0)
    23. {
    24. echo 'Файл пуст и не содержит информации';
    25. }
    26. // помещаем файл туда, куда нужно
    27. $upfile = 'home/sergey/'.$filname;
    28.  
    29. if ($_FILES['userfile']['tmp_name'])
    30. {
    31. if (!move_uploaded_file($_FILES['userfile']['tmp_name'], $upfile))
    32. {
    33. echo 'Проблема: невозможно переместить файл в каталог назначения';
    34. }
    35. }
    36. else
    37. {
    38. echo 'Проблема: возможна атака через загрузку файла. Файл: ';
    39. echo $_FILES['userfile']['name'];
    40. }
    41.  
    42. echo 'Файл успешно загружен.<br /><br />
    43. ?>
    44.  
    Вывод:
    Warning: move_uploaded_file(home/sergey/forma.txt) [function.move-uploaded-file]: failed to open stream: No such file or directory in /srv/www/htdocs/registr/uploader.php on line 41

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpsSLKVK' to 'home/sergey/forma.txt' in /srv/www/htdocs/registr/uploader.php on line 41
    Проблема: невозможно переместить файл в каталог назначения

    В php.ini - Upload_tmp_dir = "/tmp", file_uploads = on, Рзмер 16м.

    Я предпологаю что эта ситуация из за прав на /tmp пренадлежащих root.
    В Windows все работает.
    Как решить данную проблему, нехочетя /tmp делать общим, или я чегото не понимаю?
     
  2. ekip

    ekip Активный пользователь

    С нами с:
    11 авг 2009
    Сообщения:
    118
    Симпатии:
    0
    Этот вопрос помоему ничего общего к пхп не имеет, тебе нужно попробывать поставить каталогу sergey права на запись для пользователя apache, он у тебя из темпа не может перетащить файл в твой каталог
     
  3. zvenophp

    zvenophp Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    62
    Симпатии:
    0
    Пробывал ставить права chmod 777 из терминала под root не прокатило, есть какие то проблемы в настройках а где рыть не знаю
     
  4. ekip

    ekip Активный пользователь

    С нами с:
    11 авг 2009
    Сообщения:
    118
    Симпатии:
    0
    попробуй $upfile указать путь до папки которая создана в корневом каталоге твоего веб сайта в папке public_html, если в винде работает скрипт значит все проблемы в правах скорее всего
     
  5. zvenophp

    zvenophp Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    62
    Симпатии:
    0
    Перепробовал много вариантов но пока не прописал в Upload_tmp_dir = "/home/upload/" и туда же $upfile с правами 777 отказывается работать. Не знаю может и есть более правельный вариант? Куда вообще правельней Upload_tmp_dir = поместить есть какие либо ограничения по поводу безопастности?