Как скачать файл с помощью php?

Тема в разделе "PHP", создана пользователем muzshura, 19 сен 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. muzshura

    muzshura Постоялец

    Регистр.:
    27 фев 2008
    Сообщения:
    74
    Симпатии:
    3
    Нужно скриптом взять файл с другого сервера и записать в папку с самим этим скриптом.
     
  2. BACZ

    BACZ

    Регистр.:
    18 июн 2008
    Сообщения:
    612
    Симпатии:
    386
    отсюда

    http://www.nulled.ws/showthread.php?t=73990

    PHP:
    <?php
    $id
    ='http://server.com/full.tar.gz';// тут урл
    $savefile="test.gz";//путь куда сохранит.не забудь дать разрешение на запись в директорию

    $ch curl_init ($id);
    $fp fopen ($savefile"w");
    curl_setopt ($chCURLOPT_FILE$fp);
    curl_setopt ($chCURLOPT_HEADER0);
    curl_exec ($ch);
    curl_close ($ch);
    fclose ($fp);  
    ?>
    из инетпоиска
    PHP:
    <?php

    $filen
    ="http://server.org/eval_file.txt";

    $file_new="eval_file.local.txt";

    $data implode(""file($filen));

    $fp fopen($file_new"w");

    fputs($fp$data);

    fclose($fp);

    ?>
     
  3. muzshura

    muzshura Постоялец

    Регистр.:
    27 фев 2008
    Сообщения:
    74
    Симпатии:
    3
    Не пашет. Удается при некотором подходе выдача в экран, но не в файл.
     
  4. elcaste

    elcaste

    Регистр.:
    30 ноя 2007
    Сообщения:
    322
    Симпатии:
    175
    Так не проще во втором случае?
    PHP:
    <?php

    $filen
    =file_get_contents("http://server.org/eval_file.txt");

    file_put_contents("eval_file.local.txt"$filen);
    ?>
     
  5. BACZ

    BACZ

    Регистр.:
    18 июн 2008
    Сообщения:
    612
    Симпатии:
    386
    так
    во-первых на серваке вполне работает
    ты пробуешь как скрипт или как вызов php с файлом из комстроки? на винде или линухе?

    другие варианты:
    во первых тупо

    $cmd="wget -O local.name http://remote.server.com/file.zip";
    и дальше вызов любой из шести команд чтоб дёрнуть wget
    примеры всех шести - тут

    http://www.nulled.ws/showpost.php?p=560254&postcount=10


    дальше проверять if (function_exists("curl_init") где курл
    навроде того
    PHP:
    <?php
    $sourceFileName
    ='http://www.someserv.com/files/file.zip';
    $origFileName='local.name';
    if (
    function_exists("curl_init")) {
                
    $ch curl_init();
                
    curl_setopt($chCURLOPT_URL$sourceFileName);
                
    curl_setopt($chCURLOPT_TIMEOUT300);
    //            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
                
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
                
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");


                
    $st curl_exec($ch);
                
    $fd = @fopen($origFileName"w");
                
    fwrite($fd$st);
                @
    fclose($fd);

                
    curl_close($ch);
            } else 
    {
                
    $fp = @fopen($sourceFileName"rb");
                
    $fd = @fopen($origFileName"w");
                if (
    $fp && $fd) {
                    while (!
    feof($fp)) {
                        
    $st fread($fp4096);
                        
    fwrite($fd$st);
                                        }
                                }
                @
    fclose($fp);
                @
    fclose($fd);
      }
    ?>
     
  6. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.065
    Симпатии:
    197
    рас уже затронулась тема cirl подскажите как под денвером его поднять какие библиотеки и куда скопировать
     
  7. muzshura

    muzshura Постоялец

    Регистр.:
    27 фев 2008
    Сообщения:
    74
    Симпатии:
    3
    Ничего из вышепречисленного не помогло.
     
  8. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.549
    Симпатии:
    1.431
    Ну просто так не могло не помочь, должно хоть какую то ошибку писать(приведи пример), хотя на большинстве фришных хостингов работать не будет ни один из методов.
     
  9. elcaste

    elcaste

    Регистр.:
    30 ноя 2007
    Сообщения:
    322
    Симпатии:
    175

    Кладешь php_curl.dll с папку с расширениями, не помню точно имя, уже полгода как снес этого кастрата, ext или extension. Затем в php.ini раскомментируешь строку
    Код:
    extension=php_curl.dll
    и все.

    Дело, конечно, твое, но если уж и держать апач под виндой, уж хотя бы полную связку.

    Тот же AppServ: http://prdownloads.sourceforge.net/appserv/appserv-win32-2.5.10.exe?download
     
  10. BACZ

    BACZ

    Регистр.:
    18 июн 2008
    Сообщения:
    612
    Симпатии:
    386
    тогда результат phpinfo() в студию - может там вообще урлы нельзя открывать, fopen запрещено и т д
    или хотя бы список disable_function
    если запрещены не все функции для команд - то качать файлы кроме wget-а можно посредством fetch, links, lynx, get, curl

    до кучи ещё качалки
    если нет функции file_put_contents
    PHP:
    <?php $filename='/home/user/domains/server.ru/public_html/vasya/test.file'
    unlink($filename);
    $fp2  =  fopen  $filename ,  "w" ); 
    $contents=file_get_contents('http://remote.server.com/util/remotefile.zip');
    fwrite($fp2$contents); 
    fclose($fp2);
    ?>
    PHP:
    <?php
    $filen
    =file_get_contents("http://server.org/eval_file.txt");
    if (!
    function_exists("file_put_contents"))
    {
    function 
    file_put_contents($filename$data$file_append false)
           {
            
    $fp fopen($filename, (!$file_append 'w+' 'a+'));
                    if(!
    $fp) {
                    
    trigger_error('file_put_contents cannot write in file.'E_USER_ERROR);
                            return;
                    }
                    
    $result fputs($fp$data);
                    
    fclose($fp);
                    return 
    $result;
            }

    file_put_contents("eval_file.local.txt"$filen); 
    ?>
    через fsockopen

    http://damonparker.org/blog/2005/09/29/download-a-remote-file-using-php/
     
Статус темы:
Закрыта.