Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создать файл/записать данные на другом сервере, Создать файл/записать данные(ftp, ... ?) 
V
    Опции темы
AGK2
Дата 22.3.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 17.3.2008

Репутация: нет
Всего: нет



Создать файл/записать данные на другом сервере

пытаюсь сделать через ftp, наверное что то делаю не так
Код


            $ftp_server = "*******";
    $ftp_user = "********";
    $ftp_pass = "********";

    // установить соединение или выйти
    $conn_id = ftp_connect($ftp_server) or die("Не удалось установить соединение с $ftp_server"); 

    // попытка входа
    if (!@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
        echo "Не удалось войти под именем $ftp_user\n";
    } else {
     
     echo "Произведен вход на $ftp_server под именем $ftp_user\n";
       
        // смена текущей директории на public_html
        ftp_chdir($conn_id, 'default');
        
        // вывод имени текущей директории
        $dir = ftp_pwd($conn_id); // /default
            
        $filename = "$dir/f_log/12.txt";
        $f = fopen("ftp://$ftp_user:$ftp_pass@$ftp_server/$filename", "a");

        if (!$f) echo "xy";
      
        fwrite($f,"ok");

       fclose($f);

    }

    // close the connection
    ftp_close($conn_id);


помогите выводиться что я нормально захожу на ftp

Произведен вход на ********** под именем ******
 

Warning: fopen(ftp://...@********/default/f_log/12.txt) [function.fopen]: failed to open stream: FTP server reports 451 /default/f_log/12.txt: Append/Restart not permitted, try again in *******************/ftp.php on line 28

xy


а файл не создается и не пишется, fopen - возвращает ошибку(см. выше)

Добавлено через 5 минут и 57 секунд
и еще вопрос,
как можно  реализовать запись файла на другом сервере ?
(желательно примерчик)

Это сообщение отредактировал(а) AGK2 - 22.3.2008, 12:31
PM MAIL   Вверх
Fortop
Дата 22.3.2008, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



создавай временный файл локально и передавай его по фтп
Код

/**
 * Put file to FTP
 *
 * @param string $ftp_server server (ip or DNS)
 * @param string $ftp_user   login
 * @param string $ftp_pass   password
 * @param string $path       path FTP
 * @param string $remote     file name FTP
 * @param string $local      file name LOCAL
 * @return boolean
 */
function put_to_ftp($ftp_server, $ftp_user, $ftp_pass, $path, $remote, $local)
{
    if (false != ($conn_id = ftp_connect($ftp_server))) {
        if (ftp_login($conn_id, $ftp_user, $ftp_pass)) {
            if (ftp_chdir($conn_id, $path)) {
                if (ftp_put($conn_id, $remote , $local, FTP_BINARY)) {
                    $success = true;
                } else {
                    $success = false;
                }
            } else {
                $success = false;
            }
        } else {
            $success = false;
        }
    } else {
        $success = false;
    }
    ftp_close($conn_id);
    return $success;
}



Добавлено @ 12:43
чем угодно, через скрытый интерфейс - CURLом или через GET если объемы небольшие.

Код

function postToRemote($file, $path) {
    $crl = curl_init(STORE_DOMAIN. 'capture.php');
    $opts = array(CURLOPT_HEADER => true,
                  CURLOPT_RETURNTRANSFER => true,
                  CURLOPT_BINARYTRANSFER => true,
                  CURLOPT_INFILESIZE => filesize($file),
                  CURLOPT_POSTFIELDS => array('imagefile' => '@' . realpath($file)));

    if (curl_setopt_array($crl, $opts)) {
        if (!curl_exec($crl)) {
            echo "Fail to upload. Try again.";
            die();
        }
        return true;
    }
    return false;
}


код на удаленном сервере для приема
Код

    $imgInfo = getimagesize($_FILES['imagefile']['tmp_name']);
    if ('image/gif' == $imgInfo['mime'] ||
        'image/jpeg' == $imgInfo['mime'] ||
        'image/bmp' == $imgInfo['mime'] ||
        'image/png' == $imgInfo['mime']) {
        if (is_uploaded_file($_FILES['imagefile']['tmp_name'])) {
            $uploadfile = basename($_FILES['imagefile']['name']);
            if (move_uploaded_file($_FILES['imagefile']['tmp_name'], $uploaddir . $uploadfile)) {
            } else {
// обработка ошибки
            }
        } else {
// обработка ошибки
        }
    } else {
// обработка ошибки
        unlink($_FILES['imagefile']['tmp_name']);
    }


Это сообщение отредактировал(а) Fortop - 22.3.2008, 12:44


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
AGK2
Дата 22.3.2008, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 17.3.2008

Репутация: нет
Всего: нет



Fortop,  понятненько.
а сразу никак нельзя создавать файл и писать в него удаленно
а только создал на этом сервере, записал что надо, и передал на другой.
PM MAIL   Вверх
Fortop
Дата 22.3.2008, 13:04 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



Цитата(AGK2 @  22.3.2008,  12:58 Найти цитируемый пост)
а сразу никак нельзя создавать файл и писать в него удаленно

Все зависит от настроек и протокола через который ты собираешься создавать файл.

Из мануала
Код

$handle = fopen("ftp://user:[email protected]/somefile.txt", "w");
fwrite($handle, 'some text');
fclose($handle);


Добавлено через 2 минуты и 44 секунды
У меня отлично работает

Добавлено через 3 минуты и 14 секунд
Никаких предварительных ftp_connect()

Добавлено через 7 минут и 36 секунд
Уточни задачу.
Судя по твоему коду ты собираешься писать лог по фтп....
может ну его?

Во всяком случае для этих вещей я бы предложил такой механизм

Код

fopen("http://www.example.com/log.php?write=somedatahere", "r");



А на той стороне

Код

$logstring = $_GET['write'];
if (false != ($fh = fopen('log.txt', 'a'))) {
   fwrite($fh, date() .  ':' . $logstring);
}
fclose($fh);



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
AGK2
Дата 22.3.2008, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 17.3.2008

Репутация: нет
Всего: нет



буду пробовать. потом выложу результаты.

задача написать лог на другом сервере.
точнее передать некоторые данные.

Это сообщение отредактировал(а) AGK2 - 22.3.2008, 13:37
PM MAIL   Вверх
AGK2
Дата 22.3.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 17.3.2008

Репутация: нет
Всего: нет



Цитата(Fortop @  22.3.2008,  13:04 Найти цитируемый пост)
Во всяком случае для этих вещей я бы предложил такой механизмкод PHP1:fopen("http://www.example.com/log.php?write=somedatahere", "r");highlightSyntax('php_EwNDAw','php');highlightSyntax('php_EwNDAw','php');А на той сторонекод PHP1:2:3:4:5:$logstring = $_GET['write'];if (false != ($fh = fopen('log.txt', 'a'))) {   fwrite($fh, date() .  ':' . $logstring);}fclose($fh);

тоже самое
Warning: fopen(http://***********/log.php?write=somedatahere) [function.fopen]: failed to open stream: HTTP wrapper does not support writeable connections

потому то я пробовал по фтп

Это сообщение отредактировал(а) AGK2 - 22.3.2008, 13:51
PM MAIL   Вверх
Fortop
Дата 22.3.2008, 14:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



проверь вот это.
У меня отлично пишет с локалхоста в сеть.
Код

$fn = 'http://fortop.com.ua/log.php?write=';
$fn .= urlencode("some data should be written");
fopen($fn, 'r');

Просто создай тестовый файл у себя и скопируй мой код 1 в 1.


Добавлено @ 14:21
И приведи код который у тебя выполняется. И выдает твою ошибку.
Возможно проблема в настройках твоего PHP

хм. настройки тут собственно ни причем
Есть огромное подозрение, что ты делаешь

fopen($fn, 'w');

Это сообщение отредактировал(а) Fortop - 22.3.2008, 14:26


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
AGK2
Дата 22.3.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 17.3.2008

Репутация: нет
Всего: нет



Цитата(Fortop @  22.3.2008,  14:20 Найти цитируемый пост)
fopen($fn, 'w');

у меня fopen($fn, 'a') или fopen($fn, 'r')

Добавлено через 3 минуты и 40 секунд
Цитата(Fortop @  22.3.2008,  14:20 Найти цитируемый пост)
У меня отлично пишет с локалхоста в сеть.код PHP1:2:3:$fn = 'http://fortop.com.ua/log.php?write=';$fn .= urlencode("some data should be written");fopen($fn, 'r');highlightSyntax('php_I2Mzg4','php');highlightSyntax('php_I2Mzg4','php');Просто создай тестовый файл у себя и скопируй мой код 1 в 1.

ты имеешь ввиду на твой сервер записать файл
PM MAIL   Вверх
Fortop
Дата 22.3.2008, 14:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



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

fopen($fn, 'r')


2. Необходимые тебе данные будут передаваться как часть GET параметров
'write=' . urlencode("some data should be written");

write - это просто условный сигнал для твоего скрипта (ты его можешь придумать любой).

А в лог пишется уже на той стороне

Все что ниже это файл log.php лежащий на http://fortop.com.ua/

Код

// берем пришедшие нам параметры из GET
$logstring = $_GET['write'];
// пишем их в файл.
if (false != ($fh = fopen('log.txt', 'a'))) {
   fwrite($fh, date(time()) .  ':' . $logstring . "\r");
}
fclose($fh);





--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
AGK2
Дата 22.3.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 17.3.2008

Репутация: нет
Всего: нет



Цитата(Fortop @ 22.3.2008,  14:48)
Я имею ввиду, что ты не понял принципа который я тебе предлагаю.
1. Ты не пишешь напрямую в файл! Т.е. ты должен всегда использовать
Код

fopen($fn, 'r')


2. Необходимые тебе данные будут передаваться как часть GET параметров
'write=' . urlencode("some data should be written");

write - это просто условный сигнал для твоего скрипта (ты его можешь придумать любой).

А в лог пишется уже на той стороне

Все что ниже это файл log.php лежащий на http://fortop.com.ua/

Код

// берем пришедшие нам параметры из GET
$logstring = $_GET['write'];
// пишем их в файл.
if (false != ($fh = fopen('log.txt', 'a'))) {
   fwrite($fh, date(time()) .  ':' . $logstring . "\r");
}
fclose($fh);

это я понимаю, 
просто файл почему то не пишется у меня

вот я и хочу выяснить почему?
может настройки сервера, а может я что то не так делал

брал твои примеры пробовал, ошибок не каких,
 а файл не пишется на сервере

и еще пробовал просто создать файл, так вот не создается, не пойму почему. ошибок не выдает никаких
Код

$f = fopen("./f_log/log.txt", "a+");
    fwrite($f, "ok");
fclose($f);


Добавлено через 5 минут и 49 секунд
Код

$f = fopen("./f_log/log.txt", "a+");
if (!$f) echo 'xy'; else echo 'ok';
    fwrite($f, "ok");
fclose($f);

даже вот так выводит ok

Добавлено через 6 минут и 19 секунд
но файла нет.
PM MAIL   Вверх
AGK2
Дата 22.3.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 17.3.2008

Репутация: нет
Всего: нет



точнее извиняюсь на сервере создает
а если локалки или с друго сервера передавать, то нет.

file_put.php - файл который отправляет.
Код

$fn = 'http://*********.com/log.php?write=';
$fn .= urlencode("some data should be written");
fopen($fn, 'a');

if ($fn) echo 'ok';
else echo 'xy';


log.php - файл получает данные и пишет в файл
Код

$logstring = $_GET['write'];

if (false != ($fh = fopen('./f_log/log.txt', 'a+'))) {
   fwrite($fh, date() .  ':' . $logstring);
}

fclose($fh);



ошибку выдает и все
Warning: fopen(http://***.com/log.php?write=some+data+should+be+written) [function.fopen]: failed to open stream: HTTP wrapper does not support writeable connections. in q:\home\****.com\www\file_put.php on line 5

Добавлено через 1 минуту и 50 секунд
5 строка это строка
fopen($fn, 'a');

Добавлено через 6 минут и 29 секунд
все спасибо в этом и была ошибка
Код

$fn = 'http://*********.com/log.php?write=';
$fn .= urlencode("some data should be written");
fopen($fn, '[color=red]a[/color]');

if ($fn) echo 'ok';
else echo 'xy';


нужно было для чтения передавать а не для записи, т.е. "r"


Это сообщение отредактировал(а) AGK2 - 22.3.2008, 15:20
PM MAIL   Вверх
Fortop
Дата 22.3.2008, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



http wrapper не поддерживает записи напрямую в файл. Только чтение


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
AGK2
Дата 22.3.2008, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 17.3.2008

Репутация: нет
Всего: нет



Цитата(Fortop @ 22.3.2008,  14:20)
проверь вот это.
У меня отлично пишет с локалхоста в сеть.
Код

$fn = 'http://fortop.com.ua/log.php?write=';
$fn .= urlencode("some data should be written");
fopen($fn, 'r');

Просто создай тестовый файл у себя и скопируй мой код 1 в 1.


Добавлено @ 14:21
И приведи код который у тебя выполняется. И выдает твою ошибку.
Возможно проблема в настройках твоего PHP

хм. настройки тут собственно ни причем
Есть огромное подозрение, что ты делаешь

fopen($fn, 'w');

я просто у тебя взял код и пробовал, а потом когда не получилось начал думать почему
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




[ Время генерации скрипта: 0.1034 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.