PHP Shell script Problem

aLca

Registered User
Aloha, probiere grad an nem Php Script umher. Es soll mir ne menge Arbeit abnehmen, da mein Clan fast jeden Tag neue Custom Maps aufen Server haben will. Imo fummel ich hier Lokal mit Debian Lenny.

Eigentlich soll es nur: via wget Kommando ein File laden, entpacken, das gepackte archiv löschen, und das entpackte File verschieben. Bis zum Wget funktionierts, das File wird geladen, aber danach passiert nichts mehr. :(

PHP:
<?php

if (isset($_POST['URL']) && !empty($_POST['URL']))
{
	exec("cd /tmp/ && wget ".escapeshellarg($_POST['URL']));
	exec("cd /tmp/ && unp *.rar *.zip *.tar.*");
	exec("cd /tmp/ && rm *.rar *.zip *.tar.*");
	exec("cd /tmp/ && mv *.bsp /alca/test/");
	exec("cd /alca/bin/ && sh chown.sh");
	exit;
}

?>

<form method=post>
<input type=text name=URL>
<input type=submit value=runterladen>
</form>

Wenn ich das .escapeshellarg($_POST['URL'] dran lasse, funktioniert es. Nur ist das bischen zu unsicher. :( Wie ich es ohne schaffen "könnte" fehlen mir die PHP kentnisse. :(
 
Hi,
kann es sein, dass wget immer noch lädt, während die anderen Befehle ausgeführt werden?

Also so das wenn wget die Datei völlig geladen hat, die anderen Befehle schon ausgeführt worden, und daher nichts mehr passiert?

Mit freundlichen Grüßen
Flobbie
 
Ne :) Wget läd erst brav zuende, dann kommt halt nichts. Wie oben beschrieben, wenn ich an den anderen befehlen am ende das ".escapeshellarg($_POST['URL'] einbaue, machts ja das was es soll. :(
 
Wie lange lädt so ein Archiv? Evtl. wird max_execution_time erreicht und deshalb die Scriptausführung abgebrochen.
Du kannst mal versuchen mit set_timeout() die Scriptausführungszeit hochzusetzen.
 
Hey. Also: mein Testfile war 1mb. im Apache "error log" wurde das via Wget komplett geladen. Am Timeout kanns nicht liegen :)
 
wenn ich an den anderen befehlen am ende das ".escapeshellarg($_POST['URL'] einbaue, machts ja das was es soll.

Wie soll man das verstehen?

Code:
[COLOR=#000000][COLOR=#0000BB]exec[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"cd /tmp/ && unp [/COLOR][/COLOR]". escapeshellarg($_POST['URL'])[COLOR=#000000][COLOR=#DD0000][/COLOR][COLOR=#007700]); [/COLOR][/COLOR]
 
Ansich kann ichs mir ja auch nicht erklären, aber wenn es so aussieht;

PHP:
exec("cd /tmp/ && unp *.rar *.zip *.tar.* ".escapeshellarg($_POST['URL']));

Funktioniert es seltsamer weise. :(
 
entpackt der die Files?

Prüf anhang mit ner if abfrage was das für eine Datei ist.

Ich glaube das nichts entpackt wird.

du kannst auch probieren die zwischenschritte in variablen zu übergeben und mit echo einen kleinen status zauberst.
 
Mit der Zeile überdir, entpackt er das, ja. Mit dem if, und echo etc, kenn ich zwar vom Linux her, aber keine Ahnung wie ich das im PHP einbauen könnte. :( Bin da echt nicht fit drin.
 
Back
Top