За последние 24 часа нас посетили 54192 программиста и 1765 роботов. Сейчас ищут 1632 программиста ...

Подгрузка файлов на сервер

Тема в разделе "PHP для новичков", создана пользователем Feanor1982, 31 июл 2008.

  1. Feanor1982

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

    С нами с:
    20 июн 2008
    Сообщения:
    41
    Симпатии:
    0
    Решил написать сюда. Делаю подгрузку файлов на сервер. На клиенте естественно input type=file, метод, как и полагается POST. На сервере использую функцию
    Код (Text):
    1.  
    2. $filename="/photos/".$num.$_FILES['image']['name'];
    3.     $f=fopen("log.txt","w");
    4.     if(move_uploaded_file($_FILES['image']['tmp_name'],$filename)) fwrite($f,"Подгружено");else fwrite($f,"Ошибка подгрузки» ".$filename." Ошбика ".$_FILES['image']['error']);
    5.     fclose($f);
    Смотрю в log.txt, $_FILES['image']['error']=0. Т.е. файл подгрузился. Но при этом в логе апача вижу
    Код (Text):
    1.  
    2. [Thu Jul 31 19:32:15 2008] [error] [client 10.235.148.236] PHP Warning:  move_uploaded_file(/photos/1loco.bmp) [<a href='function.move-uploaded-file'>function.move-uploaded-file</a>]: failed to open stream: No such file or directory in D:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\2\\admin\\admin.php on line 72, referer: http://mychajlo/2/admin/admin.php?mode=event&id=3
    3. [Thu Jul 31 19:32:15 2008] [error] [client 10.235.148.236] PHP Warning:  move_uploaded_file() [<a href='function.move-uploaded-file'>function.move-uploaded-file</a>]: Unable to move 'd:\\Temp\\php289.tmp' to '/photos/1loco.bmp' in D:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\2\\admin\\admin.php on line 72, referer: http://mychajlo/2/admin/admin.php?mode=event&id=3
    В php.ini установки следующие
    Код (Text):
    1.  
    2. ;;;;;;;;;;;;;;;;
    3. ; File Uploads ;
    4. ;;;;;;;;;;;;;;;;
    5.  
    6. ; Whether to allow HTTP file uploads.
    7. file_uploads = On
    8.  
    9. ; Temporary directory for HTTP uploaded files (will use system default if not
    10. ; specified).
    11. upload_tmp_dir ="d:\Temp"
    12.  
    13. ; Maximum allowed size for uploaded files.
    14. upload_max_filesize = 2M
    По логике работы файл должен быть сохранён в папку /photos, которая является подпапкой админки. Но этого не происходит. Не могу понять в чём дело?
     
  2. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Два постить было раза зачем, ага ?
     
  3. Feanor1982

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

    С нами с:
    20 июн 2008
    Сообщения:
    41
    Симпатии:
    0
    А где первый раз-то? Что-то не припоминаю. Кстати, по сути вопроса так и не в курсе? Или ссылочку какую-нибудь хорошую?
     
  4. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
  5. Feanor1982

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

    С нами с:
    20 июн 2008
    Сообщения:
    41
    Симпатии:
    0
    Ну и правильно сделали, это видать браузер глюканул, дважды послав. Кстати, уже 67 человек просмотрело, а так никто и не знает, где у меня ошибка: в коде или в настройках сервака.
     
  6. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. $filename="/photos/".$num.$_FILES['image']['name'];
    попробуй укажи полный путь
     
  7. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    папка d:\temp существует?
     
  8. Feanor1982

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

    С нами с:
    20 июн 2008
    Сообщения:
    41
    Симпатии:
    0
    Папка d:\Temp cуществует и даже, как видно из лога файл туда записывается. Вот переноситьcя оттуда не переносится. А полный путь надо указывать в нотации Windows или Linux? И что тогда корень: корень диска или папка htdocs? И вообще полный путь бы не хотелось указывать, чтобы это не влияло на переносимость скриптов.
     
  9. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Попробуй
    PHP:
    1. <?php
    2. // если путь относительно выполняемого скрипта
    3. $filename=dirname(__FILE__)."/photos/".$num.$_FILES['image']['name'];
    4. ?>
    или даже
    PHP:
    1. <?php
    2. // если путь относительно корня сайта
    3. $filename=$_SERVER["DOCUMENT_ROOT"]."/photos/".$num.$_FILES['image']['name'];
    4. ?>
    (на переносимость не повлияет никак)

    Хотя я бы даже использовал для этого sprint (выглядить будет "логичнее") всё-же РНР это идеология открытого кода который пишется не для того чтоб "просто работал" но и был понятным...
     
  10. Feanor1982

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

    С нами с:
    20 июн 2008
    Сообщения:
    41
    Симпатии:
    0
    Попробовал сделать так
    Код (Text):
    1.  
    2. $filename=dirname($_SERVER['PHP_SELF'])."/photos/".$num.$_FILES['image']['name'];
    3.     $f=fopen("log.txt","w");
    4.     if(move_uploaded_file($_FILES['image']['tmp_name'],$filename)) fwrite($f,"Файл подгрузился");else fwrite($f,"Файл ".$filename." РЅРµ подгрузился. РћС?РёР±РєР° ".$_FILES['image']['error']);
    5.     fclose($f);
    В error.log написаны следующие сообщения об ошибках
    Код (Text):
    1.  
    2. [Fri Aug 01 20:44:39 2008] [error] [client 10.235.148.53] PHP Warning:  move_uploaded_file(/2/admin/photos/2race.JPG) [<a href='function.move-uploaded-file'>function.move-uploaded-file</a>]: failed to open stream: No such file or directory in D:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\2\\admin\\admin.php on line 72, referer: http://mychajlo/2/admin/admin.php?mode=event&id=3
    3. [Fri Aug 01 20:44:39 2008] [error] [client 10.235.148.53] PHP Warning:  move_uploaded_file() [<a href='function.move-uploaded-file'>function.move-uploaded-file</a>]: Unable to move 'd:\\Temp\\php94B.tmp' to '/2/admin/photos/2race.JPG' in D:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\2\\admin\\admin.php on line 72, referer: http://mychajlo/2/admin/admin.php?mode=event&id=3