Michael: Problem tar mit exec() aufzurufen

Hallo,

in einem Skript soll von dem aktuellen Ordner eine tar-Datei erstellt werden. Das mache ich mit folgender Zeile
exec('tar -cf backup.tar .');

Ich habe jetzt nur noch diese Zeile in einer PHP-Datei. Wenn ich diese über http://meinedomain.de/skript.php aufrufe, klappt das auch wunderbar: Die Datei wird korrekt erstellt. Ich will das Ganz aber täglich per Crontab ausführen lassen. Daher habe ich in der Linux shell den Befehl /usr/bin/php skript.php ausgeführt (natürlich in dem Ordner, wo auch skript.php enthalten ist). Dann erhalte ich aber folgende Fehlermeldung:
sh: /tar: No such file or directory

Das ganze läuft auf einem Virtual Server mit Suse Linu 9.3 und Plesk 8.1.0.

Weiß jemand Rat? Könnte ich evtl. über einen Cronjob das Skript via http://localost/skript.php aufrufen?

  1. Hallo Michael.

    in einem Skript soll von dem aktuellen Ordner eine tar-Datei erstellt werden. Das mache ich mit folgender Zeile
    exec('tar -cf backup.tar .');

    Ich habe jetzt nur noch diese Zeile in einer PHP-Datei. Wenn ich diese über http://meinedomain.de/skript.php aufrufe, klappt das auch wunderbar: Die Datei wird korrekt erstellt. Ich will das Ganz aber täglich per Crontab ausführen lassen. Daher habe ich in der Linux shell den Befehl /usr/bin/php skript.php ausgeführt (natürlich in dem Ordner, wo auch skript.php enthalten ist). Dann erhalte ich aber folgende Fehlermeldung:
    sh: /tar: No such file or directory

    Versuche es einmal mit dem vollen Pfad zur tar-Binary. Und warum nutzt du für das ganze Vorhaben nicht gleich ein Shellscript?

    Weiß jemand Rat? Könnte ich evtl. über einen Cronjob das Skript via http://localost/skript.php aufrufen?

    Wenn du am Anfang des Scripts eine Shebang mit dem PHP-Interpreter als Ziel notierst und das Script ausführbar machst, kannst du es direkt über das Dateisystem aufrufen.

    Einen schönen Sonntag noch.

    Gruß, Mathias

    --
    ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
    debian/rules
  2. Hello,

    Hallo,

    in einem Skript soll von dem aktuellen Ordner eine tar-Datei erstellt werden. Das mache ich mit folgender Zeile
    exec('tar -cf backup.tar .');

    Versuch mal diese Kontruktion

    $pid = exec("/usr/local/bin/tar -f backup.tar . > /dev/null & echo $!");

    In $pid wird dir die Prozessnummer zurückgegeben, mit der Du den Prozess nötigenfalls killen kannst.

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau