exec() / shell_exec() - Shellausgabe nicht komplett

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • exec() / shell_exec() - Shellausgabe nicht komplett

    Moin Moin,
    ich verusche mir gerade ein paar Backupskripte auf Basis von PHP und rsync zu erstellen. Dabei bin ich auf ein Problem gestoßen. Anscheinen werden bei exece()/shell_exec() nicht alle Daten aufgenommen, die eine Shell sendet.

    Dies bezieht sich auf Fehlermeldungen.

    Als einfaches Beispiel ( Testserver ohne rsync ):
    PHP-Code:
    #!/usr/bin/php -q
    <?
    $ausgabe = shell_exec ( "rsync -avz --compare-dest=/doesnt_exist /root/von /root/nach" ) ;
    echo "PHP-Ausgabe : ".$ausgabe ;
    ?>
    Ergebnis :
    Code:
    testserver:~# ./backuptest.php
    
    sh: rsync: command not found
    PHP-Ausgabe :
    testserver:~#
    Gibt es einen Weg, die Fehlermeldung irgendwie ins PHP zu kriegen damit ich Fehlermeldungen überprüfen kann ?

    MfG
    Daether

  • #2
    "Command not found" ist eine Fehlermeldung deiner Shell. Fehlermeldungen werden auf stderr ausgegeben. Mit shell_exec() und Co. bekommst du aber nur zurück, was auf stdout erschien.
    Um stderr auf stdout umzuleiten, genügt
    PHP-Code:
    shell_exec('rsync ... 2>&1'); 
    Redirection (computing) - Wikipedia, the free encyclopedia

    Kommentar


    • #3
      Ich liebe dieses Forum

      Danke dir onemorenerd, hab mir Wikipedia noch genau durchgelesen und das Ganze verstanden.

      Kommentar

      Lädt...
      X