Mailinglisten-Archive |
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