Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Изменение файлов на удалённом сервере через FTP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Помогите в решении проблемы
MoNSTRiK
Отправлено: 18 Октября, 2009 - 21:08:28
Post Id



Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




Доброе время суток.
Встала глобальная проблема.

Существует хостинг, на котором расположена CMS к ней сей час дописывается плагин, которые позволит изменять текстовые файлы (*.txt, ini) удалённого сервера через ftp подключение.

конечно хотелось использовать простой способ, который подходит великолепно для файлов на локальном хосте: спараметром w+, который очищает файл и записывает его заного, уже с изменённой информацией.
PHP:
скопировать код в буфер обмена
  1. $fpp = fopen("ftp://login:pass@domen.ru/0.txt", "w+");


Как оказалось, что данный параметр w+ не работает нормально для работы через ftp с удалённым сервером.

Но, надумал такой выход:
1. Удаляем имеющийся файл, конечно который мы сохранили куда либо.
PHP:
скопировать код в буфер обмена
  1. $open=ftp_connect("www.domen.ru","21","30");
  2. ftp_login($open, "login", "password");
  3. ftp_delete($open,"0.txt");
  4. ftp_close($open);


2. Создаём на его месте такой же только пустой и записываем в него нужную информацию.
PHP:
скопировать код в буфер обмена
  1. $fpp = fopen("ftp://login:password@domen.ru/0.txt", "xa");
  2.  
  3.   for ($i = 0; isset($fp[$i]); $i++)
  4.   {
  5.     $test = fwrite($fpp, $fp[$i]);
  6.   }
  7.  // Запись в файл
  8. if ($test) echo '<br><br>Данные в файл успешно занесены.';
  9. else echo 'Ошибка при записи в файл.';
  10.  
  11. fclose($fpp); //Закрытие файла


Данная программа начинает работать, но не стабильно. Удаляется файл с лихвой и создаётся тоже, но раз через раз в него после создания заносится нужная информация. Нестабильная работа получается. Да и два подключения, как-то тоже не очень приятно.

Как можно грамотно занести массив с данными на удалённый сервер в существуюещий текстовый файл. Так чтобы файл обнулился перед записью в него.
 
 Top
DeepVarvar Супермодератор
Отправлено: 18 Октября, 2009 - 21:29:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




удалите файл ( unset($totsamyjfajl); ), после чего создайте новый с тем же именем... и запишите в него все что вам надо...
 
 Top
MoNSTRiK
Отправлено: 18 Октября, 2009 - 21:45:38
Post Id



Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




так и сделал, выше я это уже описал. Но, не стабильно записываются данныев новосозданный файл.
 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Октября, 2009 - 09:47:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Смените в fopen() режим с "xa" на "wb"
 
 Top
MoNSTRiK
Отправлено: 19 Октября, 2009 - 11:57:17
Post Id



Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




DeepVarvar пишет:
Смените в fopen() режим с "xa" на "wb"


Тогда запись ещё не стабильней работает. с XA ещё норм. Вы немного не по теме пишите. Хорошо
 
 Top
valenok Модератор
Отправлено: 19 Октября, 2009 - 12:21:38
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. // set up basic connection
  3. $conn_id = ftp_connect($ftp_server);
  4.  
  5. // login with username and password
  6. $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
  7.  
  8. // check connection
  9. if ((!$conn_id) || (!$login_result)) {
  10.         echo "FTP connection has failed!";
  11.         echo "Attempted to connect to $ftp_server for user $ftp_user_name";
  12.         exit;
  13.     } else {
  14.         echo "Connected to $ftp_server, for user $ftp_user_name";
  15.     }
  16.  
  17. $destination_file = 'public_html/1.txt';
  18. $source_file = '1.txt';
  19.  
  20. if (ftp_delete($conn_id, $file)) {
  21.  echo "$file deleted successful\n";
  22. } else {
  23.  echo "could not delete $file\n";
  24. }
  25.  
  26. // upload the file
  27. $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
  28.  
  29.  
  30.  
  31. // check upload status
  32. if (!$upload) {
  33.         echo "FTP upload has failed!";
  34.     } else {
  35.         echo "Uploaded $source_file to $ftp_server as $destination_file";
  36.     }
  37.  
  38. // close the FTP stream
  39. ftp_close($conn_id);
  40. ?>


-----
Truly yours, Sasha.
 
My status
 Top
MoNSTRiK
Отправлено: 19 Октября, 2009 - 12:52:37
Post Id



Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




Вот, СПАСИБО! Это отличный выход из ситуации Улыбка переделать немного и подойдёт Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB