• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP SSH2 edycja plików

Object Storage Arubacloud
+1 głos
131 wizyt
pytanie zadane 22 lipca 2020 w PHP przez Misiek Mądrala (5,320 p.)

Witam,

Mam taki kod w php który łączy mi się po ssh do serwer i odczytuje plik znajdujący się na serwerze 

i mam pytanie jak zrobić żeby np dopisać dane do tego pliku albo wykasować całe dane i nadpisać nowymi bez ruszania pliku na serwerze 

 

<?php
 
$host = "namehost";
 
$port = 22;
 
$username = "username";
 
$password = "password";
 
$connection = NULL;
 
$remote_file_path = "/home/user/test.txt";
 
try {
// Sprawdzanie połączenia z serwerem 
 $connection = ssh2_connect($host, $port);
 if(!$connection){
       throw new \Exception("Could not connect to $host on port $port");
    }

// Sprawdzanie poprawnych danych logowania
 $auth  = ssh2_auth_password($connection, $username, $password);
 if(!$auth){
       throw new \Exception("Could not authenticate with username $username and password ");  
   }


 $sftp = ssh2_sftp($connection);
 if(!$sftp){
       throw new \Exception("Could not initialize SFTP subsystem.");  
   }
 
   $stream = fopen("ssh2.sftp://".$sftp.$remote_file_path, 'r');
   if (! $stream) {
       throw new \Exception("Could not open file: ");
   }
 
   $contents = stream_get_contents($stream);
   echo "<pre>"; print_r($contents); echo "</pre>";
   
   @fclose($stream);
 
   $connection = NULL;
 
} catch (Exception $e) {
 
   echo "Error due to :".$e->getMessage();
 
}

 
?>

 

1 odpowiedź

0 głosów
odpowiedź 26 lipca 2020 przez VBService Ekspert (254,880 p.)

Spróbuj tego

  // Odczytanie danych z pliku
  $stream = @fopen("ssh2.sftp://".$sftp.$remote_file_path, 'r');
  if (! $stream) {
     throw new \Exception("Could not open file: ".$remote_file_path);
  } else {
     $contents = file_get_contents($stream);
  }
  
  // Zapisanie danych do pliku z wykasowaniem danych, które
  // obecnie znajdują się w pliku "nadpisanie".
  $stream = @fopen("ssh2.sftp://".$sftp.$remote_file_path, 'w');
  if (! $stream) {
     throw new Exception("Could not open file: ".$remote_file_path);
  } else {
     $contents = "Novus lorem ipsum dolor sit amet, consectetur adipiscing elit.";
     fwrite($stream, $contents);
  }
  @fclose($stream);

  // Dopisanie danych do pliku
  $stream = @fopen("ssh2.sftp://".$sftp.$remote_file_path, 'a');
  if (! $stream) {
     throw new Exception("Could not open file: ".$remote_file_path);
  } else {
     $contents = " Novum additae lorem ipsum dolor sit amet, consectetur adipiscing elit.";
     fwrite($stream, $contents);
  }
  @fclose($stream);

[ fopen ] [ fwrite ]

Podobne pytania

0 głosów
0 odpowiedzi 199 wizyt
pytanie zadane 4 lutego 2022 w Sprzęt komputerowy przez Pawel1995 Gaduła (3,810 p.)
0 głosów
1 odpowiedź 258 wizyt
pytanie zadane 31 grudnia 2018 w PHP przez rejzer Użytkownik (680 p.)
0 głosów
1 odpowiedź 159 wizyt
pytanie zadane 17 sierpnia 2016 w Systemy operacyjne, programy przez MaciekM Użytkownik (990 p.)

92,761 zapytań

141,685 odpowiedzi

320,484 komentarzy

62,105 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...