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
Форумы портала PHP.SU :: Версия для печати :: Изменение файлов на удалённом сервере через FTP
Форумы портала PHP.SU » PHP » Программирование на PHP » Изменение файлов на удалённом сервере через FTP

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

1. MoNSTRiK - 18 Октября, 2009 - 21:08:28 - перейти к сообщению
Доброе время суток.
Встала глобальная проблема.

Существует хостинг, на котором расположена 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); //Закрытие файла


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

Как можно грамотно занести массив с данными на удалённый сервер в существуюещий текстовый файл. Так чтобы файл обнулился перед записью в него.
2. DeepVarvar - 18 Октября, 2009 - 21:29:57 - перейти к сообщению
удалите файл ( unset($totsamyjfajl); ), после чего создайте новый с тем же именем... и запишите в него все что вам надо...
3. MoNSTRiK - 18 Октября, 2009 - 21:45:38 - перейти к сообщению
так и сделал, выше я это уже описал. Но, не стабильно записываются данныев новосозданный файл.
4. DeepVarvar - 19 Октября, 2009 - 09:47:07 - перейти к сообщению
Смените в fopen() режим с "xa" на "wb"
5. MoNSTRiK - 19 Октября, 2009 - 11:57:17 - перейти к сообщению
DeepVarvar пишет:
Смените в fopen() режим с "xa" на "wb"


Тогда запись ещё не стабильней работает. с XA ещё норм. Вы немного не по теме пишите. Хорошо
6. valenok - 19 Октября, 2009 - 12:21:38 - перейти к сообщению
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. ?>
7. MoNSTRiK - 19 Октября, 2009 - 12:52:37 - перейти к сообщению
Вот, СПАСИБО! Это отличный выход из ситуации Улыбка переделать немного и подойдёт Улыбка

 

Powered by ExBB FM 1.0 RC1