exec() / shell_exec() - Shellausgabe nicht komplett

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

    Comment


    • #3
      Ich liebe dieses Forum

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

      Comment

      Working...
      X