phpbar.de logo

Mailinglisten-Archive

[php] Shell-Befehle =?iso-8859-1?Q?ausf=FChren?=

[php] Shell-Befehle =?iso-8859-1?Q?ausf=FChren?=

Sandor Wonschik Sandor.Wonschik_(at)_esd.h.uunet.de
Tue, 24 Aug 1999 13:48:29 +0200


Entschuldigt bitte, daß ich mich hier nochmal mit meiner Frage
einbringe, aber bisher sind schon sehr viele Themen seit Freitag
erschöpfend besprochen worden (außer meinem). :-)
Leider hänge ich an diesem Punkt so sehr fest, daß ich nochmal schreibe.
Danke für Euer Verständnis,
Sandor

------------------ ursprüngliche Mail -----------------

Hallo,

irgendwie blicke ich da nicht durch. Ich habe ein paar Befehle, die an
die Shell (unter Linux) weitergereicht werden sollen. Aber es will
einfach nicht klappen.

Wer weiß hier, warum das nicht funktioniert:
<?
        $out="ls ; ls >> datei";

        /* ist die folgende Zeile aktiv, kommt gar nix mehr */
        /*$out=escapeshellcmd("$out");*/

        echo "<br><br>echo<br>";
        echo $out;        
        echo "$out";      
                      
        echo "<br><br>system<br>";                  
        system($out);
        system("$out");         

        echo "<br><br>passthru<br>";
        passthru($out);
        passthru("$out");
        
        echo "<br><br>exec<br>";
        exec($out);
        exec("$out");
?>

Wenn man das, was nach dem "echo $out" ausgegeben wird, direkt in die
Shell eingeben würde, gäbe es das erwartete Ergebnis.

Ganz nebenbei: wie kann man bei der Ausgabe erreichen, daß auch ein
Zeilenumbruch nach jedem File gemacht wird?


Eigentlich ist das oben dargestellte Problem für mich ein prinzipielles,
denn eigentlich wollte ich mir mit einem PHP-Script für alle meine
PHP3-Files im gewählten Ordner Links anlegen, die genauso heißen, aber
auf phps enden. Per Shell-Skript klappt das auch prima. Nun wollte ich
das mal mit PHP umsetzen.

Hier mal das Shell-Script:
#!/bin/sh
for NAME in `ls *.php3`; do
   ln -sf $NAME `echo $NAME | sed s/.php3/.phps/g`
done

Und nun mein PHP-File:
<?
        $out=     "for NAME in `ls *.php3`; do ";
        $out=$out."ln -sf \$NAME `echo \$NAME | sed s/.php3/.phps/g`;";
        $out=$out."done";

        /* ist die folgende Zeile aktiv, kommt gar nix mehr */
        /*$out=escapeshellcmd("$out");*/

        echo "<br><br>echo<br>";
        echo $out;        
        echo "$out";      
                      
        echo "<br><br>system<br>";                  
        system($out);
        system("$out");         

        echo "<br><br>passthru<br>";
        passthru($out);
        passthru("$out");
        
        echo "<br><br>exec<br>";
        exec($out);
        exec("$out");
?>

Auch hier gilt: wenn man das, was nach dem "echo $out" ausgegeben wird,
direkt in die Shell eingeben würde, gäbe es das erwartete Ergebnis und
die links würden angelegt werden.

Danke schonmal,
Sandor


php::bar PHP Wiki   -   Listenarchive