PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : linuxscript mit php ausführen.



tchaluppa
28.10.06, 11:17
hallo,

ich möchte einfach nur einen dienst über php auf meinem lokalen server starten und beenden können.
ich hab mir dazu einfach mal ein script namens test mit folgenden inhalt



#!/bin/sh

/etc/init.d/mldonkey-server start &


geschrieben.

Meine php sieht so aus:



<?php
exec('/server/esel',$var);
print_r($var);
?>


mein script wird allerdings nicht ausgeführt. /server ist ein verzeichnis auf meinem webserver.

muss ich den absoluten linuxpfad angeben oder hab ich einen anderen fehler.
rechte des shellscripts sind auf 777 gesetzt.

danke im voraus!

psy
28.10.06, 11:25
evtl. ist die exec-funktion in deiner php.ini deaktiviert.
schau mal in der php.ini nach disable_functions.

exec sollte man aber deaktiviert lassen, da sich darüber viel mist anstellen lassen kann.


; This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
;disable_functions = system, exec, passthru, shell_exec

tchaluppa
28.10.06, 11:33
hallo,

danke für die schnelle antwort. hab unter disable_functions gar nichts drin stehen. safemode ist auch off.

ich verstehe nun nicht, was noch eine ausführung des scriptes behindern könnte.

hat noch einer eine idee??

danke

psy
28.10.06, 11:37
was steht denn in den logs?

tchaluppa
28.10.06, 11:41
in der /var/log/messages steht kein neuer eintrag drin, nachdem ich das script ausgeführt habe. hat php noch eine eigene log?

danke

tchaluppa
28.10.06, 11:43
im webbrowser wird clientseitig als ausgabe Array() angegeben, falls das noch weiter hilft.

psy
28.10.06, 12:00
schau mal in den logs vom webserver.
es kann natürlich auch sein, dass irgendwas mit dem php-scipt nicht stimmt, dass übersteigt aber ehrlich gesagt meinen minimalen php-kenntnisse ;)

tchaluppa
28.10.06, 12:05
das hat mir schonmal weiter geholfen.. ich hab keine berechtigungen. nun muss ich mich wohl mal in einem php forum umschauen, wie ich root rechte bekomme.

danke!

suck
28.10.06, 18:10
Mit "sudo" kannst du das Prog als root ausführen. Alternativ kannst du die Binary auch "setuid root" setzen. Besser wäre allerdings dafür zu sorgen, dass das Prog vom jeweiligem User ausgeführt werden kann.

zyrusthc
28.10.06, 18:27
So gehts:

$output = shell_exec("/root/serverscript start");
echo $output

Greeez Oli

marce
28.10.06, 18:53
[...] ein script namens test geschrieben[...]

Meine php sieht so aus:



<?php
exec('/server/esel',$var);
print_r($var);
?>



ähm - Schreibfehler oder prinzipieller Fehler?

Starte das Script doch mal an der Konsole per php [Scriptname] - was kommt denn dann als Ausgabe?

Ansonsten kann man php auch so konfigurieren, dass es php-Fehlermeldungen an der "Konsole" (-> in dem Fall die Webseite) ausgibt - da sollte ja was erscheinen.

tchaluppa
30.10.06, 17:47
hallo,

der eintrag von zyrusthc hat mir schon ein wenig weiter geholfen.
das geht soweit auch über die konsole.
das problem ist nur, dass ich keine root rechte bekomme, wenn ich das script über den webbrowser aufrufe.

gibt es da eine möglichkeit, wenigstens das pw von root per webbroser abzufragen??

danke

Josh0815
30.10.06, 18:14
Schau mal hier nach:

http://www.webwork-community.net/posting7925_46_0.html

Hab zwei Begriffe mit den jeweiligen Zusammenhängen rausgefiltert: "sudo" & "unsicher" und "entkopplen" & "DB Insert".

Wie ich das daraus verstehe sollst du ne Datenbank mit deinen Shell Befehlen füttern. Und diese dann von einem Shell-Script auslesen lassen um sie auszuführen. D.h. dieses Script läuft schon im root Modus.

zyrusthc
30.10.06, 19:27
hallo,

der eintrag von zyrusthc hat mir schon ein wenig weiter geholfen.
das geht soweit auch über die konsole.
das problem ist nur, dass ich keine root rechte bekomme, wenn ich das script über den webbrowser aufrufe.

gibt es da eine möglichkeit, wenigstens das pw von root per webbroser abzufragen??

danke

Ändere die /etc/sudoers mit visudo
Füge dies hinzu:

user ALL=NOPASSWD: /pfad/script
user musst du durch apache oder www-run ergänzen , je nach dem unter welchem User der Webserver läuft!

Dann sollte es klappen!

Greeez Oli

sysop
30.10.06, 20:18
<?php
exec('/server/esel',$var);
print_r($var);
?>

brauchst du rückgabewerte ??
exec gibt keine rückgaben, dann muss man mit passthru() arbeiten.


<?php
exec ('/etc/init.d/mldonkey-server start &');
?>

sudoers sollte dafür aber gesetzt sein, z.b. auf wwwrun.

tchaluppa
30.10.06, 20:22
hab es gerade selbst hinbekommen..

hab mir einfach ein neuen nutzer angelegt, der dann als webnutzer fungiert.

in meiner sudoers datei hab ich dann folgendes eingetragen:



tux debian-pc=/etc/init.d/mldonkey-server


das wars.

man muss eben sehr aufpassen, was man freigibt für die einzelnen user.

danke an alle