EscapeShellCmd unter Linux

Alles, was PHP betrifft, kann hier besprochen werden.

EscapeShellCmd unter Linux

Postby berndeckstein » 18. January 2004 20:36

Hallo....
habe meinen Webserver hier auf meinem Rechner unter WIndows laufen.
Möchte aber gerne Linux kennenlernen und habe mir das Suse Linux 9.0 für AMD64 zugelegt.Gott sei Dank auf einer weiteren Festplatte sodass ich immer umschalten kann.
Eigentlich läuft alles unter Linux...dank lampp...aber was muss ich machen das unten stehen Routine läuft ???
Wenn man davon ausgeht das das Programm links2.exe unter Linux funktioniert,was leider auch nicht der Fall ist.

<?php
ob_start();
ignore_user_abort(1);
$cmd="links2.exe";
System(EscapeShellCmd($cmd));
header("Location: steuerung.php");
ob_end_flush();
exit;
?>

oder soetwas

<?
$cmd="/opt/aplay xpchat.wav";
System(EscapeShellCmd($cmd));
header("Location: menudreh.htm");
exit;
?>

Danke für die Antwort

Bernd
berndeckstein
 
Posts: 57
Joined: 02. May 2003 22:38

Postby CubaLibre » 19. January 2004 00:10

Versuchs mal mit passthru(); statt system();
CubaLibre
 
Posts: 25
Joined: 18. January 2004 01:35
Location: Weilburg

nee geht nicht

Postby berndeckstein » 24. January 2004 22:17

danke für die Antwort.
Nein nicht mit passtruh , exec , system......es klappt nicht.
Aber...
im Apache Error.log steht das der Befehl ausgeführt wird aber kein
Sounddevice gefunden wird...???

Gebe ich den Befehl aber im Terminalfenster ein gehts ???

Weiss einer Rat ???

Bernd
berndeckstein
 
Posts: 57
Joined: 02. May 2003 22:38

Postby Benzman » 25. January 2004 14:29

Also erstmal kann man .exe Dateien unter Linux nur mit einem Emulator (z.B. wine) ausführen. Dann kannst du aber trotzdem nicht einfach $cmd="links2.exe" schreiben, sondern $cmd="wine links2.exe" oder so ähnlich.
Und das mit dem Sounddevice könnte davon kommen, dass der Benutzer unter dem der Apache läuft keine Berechtigung zum Abspielen von Audiodateien hat. Ich weiß zwar nicht wie das bei SuSE ist, aber bei Gentoo muss der enstprechende User in der Gruppe "audio" sein.
User avatar
Benzman
 
Posts: 132
Joined: 27. July 2003 18:46
Location: Bayern

danke

Postby berndeckstein » 25. January 2004 14:51

Danke für die Antwort....

Ist klar das die EXE Programme nicht unter Linux laufen.
Untendrunter war ein Beispiel wie ich es unter Linux gemacht habe.

Da der Apache unter dem Benutzer Root installiert ist und läuft sollte doch der Sound gehen oder ????

Werde mal nachschauen......

Habe mir auch die Suse CD WINE zugelegt......weiss aber nicht so recht wie ich die installieren muss.

Versuche mal weiter.

Danke nochmals.

Bernd
berndeckstein
 
Posts: 57
Joined: 02. May 2003 22:38

Postby Benzman » 25. January 2004 19:43

Nur weil der Apache als root gestartet wurde, heißt das noch lange nicht, dass der Apache auch als root läuft. Nur der Hauptprozess läuft dann als root. Wenn jetzt aber jemand eine Seite aufruft, wird ein sogenannter "worker-thread" gestartet, der dann für die Verarbeitung des Aufrufes zuständig ist. Der worker-tread läuft aber normalerweise nicht als root, sondern als der User, der in der httpd.conf eingestellt ist. In der Standardkonfiguration müsst etwas in der Art von

User nobody
Group nogroup

in der httpd.conf stehen. Demnach werden also alle worker-threads als "nobody" gestartet. Und nobody hat normalerweise nicht die Rechte Audio Dateien abzuspielen.

Es ist aber nicht ratsam, dem User nobody Rechte zu geben um Audio Dateien abzuspielen. Eher würde ich dazu raten, einen neuen User mit Audio Rechten anzulegen und diesen dann in die httpd.conf einzutragen.
User avatar
Benzman
 
Posts: 132
Joined: 27. July 2003 18:46
Location: Bayern

danke

Postby berndeckstein » 25. January 2004 23:12

Danke für die ausführliche Antwort.
Mit den Rechten unter Linux habe ich so meine Probleme,denn das hat es unter WIndows nicht gegeben.
In der conf stand:
User wwwrun
Group www

Habe ohne Erfolg apuser und apgroup angelegt mit RunLevelEditor.
Namen und Gruppe eingetragen.Apache neu gestartet.....
Kein Erfolg.....anschliessend war der Name im RunLeveleditor verschwunden.
?????

Deswegen dann mit
groupadd apacheg
useradd -g apacheg -d /dev/null -s /etc apacheuser

angelgt.(von einer ftp installation abgeschrieben)

Im RunLevelEditor ok...... user hat audio rechte nur leider gleiche Fehlermeldung.

Was habe ich falsch gemacht ? oder ist es ein anderes Problem ??

Bernd
berndeckstein
 
Posts: 57
Joined: 02. May 2003 22:38

Postby Benzman » 26. January 2004 19:12

Versuch mal:

useradd -G apacheg,audio -d /home/apacheuser -s /dev/null apacheuser

und wenn das nicht geht, folgendes:

useradd -G apacheg,audio -d /home/apacheuser -s /bin/sh apacheuser
User avatar
Benzman
 
Posts: 132
Joined: 27. July 2003 18:46
Location: Bayern

danke

Postby berndeckstein » 26. January 2004 21:51

danke nochmal für die Antwort.Bin naemlich immer noch nicht weiter.

Bei beiden Eingaben kommt Meldung user allready exist.

Demnach habe ich es wohl richtig gemacht ?? oder.

Habe gestern abend was schlaues gelesen.....

cat musik,wav >/dev/audio

das geht tatsaechlich....aber ich höre nur ein fiepen und rauschen und eben will ich es wieder probieren da kommt die Meldung
Das Geraet oder die Ressource ist belegt.
Aber per php Aufruf tut sich was !!!

Kommt man hiermit irgendwie weiter ?????

Bernd
berndeckstein
 
Posts: 57
Joined: 02. May 2003 22:38

Postby Benzman » 26. January 2004 22:17

Natürlich solltest du den User apacheuser erst löschen vor du den Befehl eingibst. Sonst bringt der Befehl ja nix. Es geht ja nicht darum, dass der User nicht existiert, sondern nur, dass er keine Rechte hat.
User avatar
Benzman
 
Posts: 132
Joined: 27. July 2003 18:46
Location: Bayern

sorry

Postby berndeckstein » 27. January 2004 09:49

Sorry.......
werde es probieren und mich melden.

Danke für die Geduld.

Bernd
berndeckstein
 
Posts: 57
Joined: 02. May 2003 22:38

oh je

Postby berndeckstein » 27. January 2004 21:28

so,habe es probiert....

aber egal was ich eingebe es kommt eine fehlermeldung:

mcop warning: user defined signal handler found for SIG_PIPE,overriding
/tm/mcop-apacheuser is not owned by user

da die gruppe apacheg immer wieder verschwand habe ich es zu users hinzugefügt.
dort steht users nr 100 mitglieder apacheuser,bernd,games,apacheuser

der apacheuser hat die nr 502 und gehört zu users,audio,users


??????

UND NUN ?

Bernd
berndeckstein
 
Posts: 57
Joined: 02. May 2003 22:38


Return to PHP

Who is online

Users browsing this forum: No registered users and 43 guests