не могу изменить по Ftp файл

Тема в разделе "PHP программирование", создана пользователем RommzeS, 28 апр 2007.

Статус темы:
Закрыта.
  1. RommzeS

    RommzeS Гость

    задача - открыть файл на локальном диске вывести в окно браузера и записать в файл на сервере вместе с IP и датой
    подскажите что не правильно?
    <html><body>
    IP-: <?=@$_SERVER['REMOTE_ADDR']?><br>
    </body></html>
    <?php
    // вывод дат:
    echo date("время h:i:s A")."<br>";
    echo date("сегодня d.m.Y")."<br>";

    $file = "c:/ddd.txt"; //ищем файл
    $fh = fopen($file, "a+") or die("файла ($file) несуществует!");
    //пробуем открыть
    print "<hr>файл найдем и открыт!";
    $fs = filesize("c:/ddd.txt"); //выводим размер
    print "файл имеет размер $fs байт.<hr>";

    //ищем файл на сервере
    $file = "file.txt";
    $fh = fopen($file, "a+") or die("файла ($file) несуществует!"); //пробуем открыть
    print "<hr>файл найден и открыт!";
    $fs = filesize("file.txt"); //размер
    print "файл имеет размер $fs байт.<hr>";

    $filename = "file.txt";

    if ( is_writeable($filename) ) :

    $fh = fopen($filename, "a+b");// открываем и помещаем указатель в конец

    //пишем содержимое в файл
    $success - fwrite($fh, $_SERVER['REMOTE_ADDR']);

    // закрываемfclose($fh); else :
    print "не могу открыть $filename для записи";
    endif;
    ?>

    что тут надо изменить ?
     
  2. Holger Dee Assuran

    Holger Dee Assuran Гость

    По моему функция fopen() - должна принимать путь к файлу и режим доступа.
    Мне кажется неправильной строчка
     
  3. RommzeS

    RommzeS Гость

    $file= "file.txt"; //создаём файл

    if ( is_writeable($file) ) : //проверка на запись

    $fh = fopen($file, "a+"); //открываем и ставим указатель в конец файла

    должно получиться так?
     
  4. TSnake

    TSnake Гость

    <!--QuoteBegin-RommzeS+28:04:2007, 11:23 -->
    <span class="vbquote">(RommzeS @ 28:04:2007, 11:23 )</span><!--QuoteEBegin-->$file = "c:/ddd.txt"; //ищем файл
    [snapback]63855" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    долго придётся искать :)
    файл сначала нужно upload'ить на сервер через форму, а потом уже сохранять и выводить
     
  5. destr

    destr Гость

    во-первых,
    fopen будет искать на сервере файл, если ты будешь указывать в виде ulr т.е. или http://... или ftp:// только в этом случае она будет пытаться найти обработчик нужного протокола, тут у тебя уже fopen открывает локалный файл, точнее говоря, пытается открыть там, где запускается скрипт.
    ну и во-вторых, если работаешь по ftp то и используй ftp_put и ftp_get

    ну как вариант

    Код (Text):
    <?php
    /*
    * Считаем что соединение с фтп установлено, мы авторизованы..
    */
    $remoutfile = "/pub/file.txt";
    $localfile = "file_".time().".txt";
    // загрузим файл с фтп
    if(!ftp_get($ftp_conn, $localfile, $remoutefile, FTP_BINARY))
    die("ну не смог я загрузить.ё");

    $fs = filesize($localfile); //размер
    print "файл имеет размер $fs байт.<hr>";

    if(!is_writeable($localfile))
    return;

    $fh = fopen($filename, "a+b");


    if(!fwrite($fh, $_SERVER['REMOTE_ADDR']))
    {
    echo "Не удалось записать";
    return;
    }
    fclose($localfile);
    if(!ftp_put($ftp_conn, $remotefile, $localfile, FTP_BINARY))
    echo "Не удалось загрузить файл $localfile обратно на сервер"
    ?>
     
  6. RommzeS

    RommzeS Гость

    у меня стоит Apache/2.0.59 (Win32) PHP/5.1.6

    идут одни ошибки.
    не могу понять почему.
    в книгах либо нет ничего по этим фонкциям либо написано оччень мало...

    дайте плиз скрипт который из файла *txt на локальном диске пишет
    содержимое в файл *txt на сервере
    либо линк на хорошую инфо как это написать...
     
  7. RommzeS

    RommzeS Гость

    ошибки такие

    Notice: Undefined variable: ftp_conn in F:\home\localhost\55.php on line 20

    Notice: Undefined variable: remoutefile in F:\home\localhost\55.php on line 20

    ....

    если убрать строки из *php файла -->

    if(!ftp_get($ftp_conn, $localfile, $remoutefile, FTP_BINARY))
    die("не могу загрузить.¸");

    то получаю

    Warning: filesize() [function.filesize]: stat failed for file_1178099518.txt in T:\home\localhost\55.php on line 22
    файл имеет размер байт.


    меняю

    $localfile = "file_".time().".txt";

    на

    $localfile = "c:/1.txt";

    и получаю


    Соединение с 192.168.000.002, и логином - óäàëîñü

    --------------------------------------------------------------------------------
    файл имеет размер 11 байт.
    --------------------------------------------------------------------------------

    Notice: Undefined variable: filename in T:\home\localhost\55.php on line 28

    Warning: fwrite(): supplied argument is not a valid stream resource in T:\home\localhost\55.php on line 31
    Не удалось записать

    ...........
    и выходит что в файл на локальном диске скрипт пишет IP

    строка if(!fwrite($fh, $_SERVER['REMOTE_ADDR']))

    а на сервере

    ...........
    я вообщето только начал пробовать себя в PHP ....
    и пока ещё не очень хорошо получается. ...
    и спасибо за отклики!
     
  8. destr

    destr Гость

    классно пишешь, если убрать, то так
    вот тебе полный код, с установкой соединения... мы устанавливаем соединение, загружаем себе файл , дописываем и записываем обратно и закрываем соединение.
    тут два момента. должны быть права на создание файла, и на перезапись на фтп иначе функция ftp_put завершится с ошибкой

    Код (Text):
    <?php

    //ftp - сервер
    define("FTP_SERVER", "217.25.1.191");
    //ftp - пользователь
    define("FTP_USER", "root");
    //пароль
    define("FTP_PASS", "qwertyui");

    //установим соединение с ftp
    $ftp_conn = ftp_connect(FTP_SERVER) or die("НЕ могу подключится к серверу");

    //залогинимся
    if(!ftp_login($ftp_conn, FTP_USER, FTP_PASS))
    {
    ftp_close($ftp_conn);
    die("Не смог аутентифицироваться, расстроился и умираю:)bye");
    }

    $remoutefile = "/pub/test.txt";
    $localfile = "file_".time().".txt";

    // загрузим файл с фтп
    if(!ftp_get($ftp_conn, $localfile, $remoutefile, FTP_BINARY))
    die("ну не смог я загрузить.ё");

    $fs = filesize($localfile); //размер
    print "файл имеет размер $fs байт.<hr>";

    if(!is_writeable($localfile))
    return;

    $fh = fopen($localfile, "a+b");


    if(!fwrite($fh, $_SERVER['REMOTE_ADDR']))
    {
    echo "Не удалось записать";
    return;
    }
    fclose($fh);

    if(!ftp_put($ftp_conn, $remoutefile, $localfile, FTP_BINARY))
    echo "Не удалось загрузить файл $localfile обратно на сервер $remoutefile";

    ftp_close($ftp_conn);

    //удалим файл ведь он нам больше не нужен
    unlink($localfile);

    ?>
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей