Shell mittels php ausführen

bauchinj

Erfahrenes Mitglied
Hallo Leute!

Ich würde gerne ein Shell-Script mittels php ausführen, nur tut es nicht, was ich will:

PHP:
passthru('sudo ../shell.sh var tester admin noGroup',$ret);
system('sudo ../shell.sh var tester admin noGroup',$ret);

Keiner der beiden Befehle funktioniert, $ret liefert mir immer 127? Hat das eine Bedeutung?

Tu mir relativ schwer mit der Fehlerbeschreibung, da das shell-script funktioniert (teste es direkt auf der Konsole) und ich keine Fehlermeldung (außer 127) bekomme...
 
127 ist glaub ich command oder file not found.

Versuchs mal mit einem absoluten anstatt einem relativen Pfad
 
macht leider auch keinen unterschied :(

Mit Berechtigungen hat es nichts zu tun? Bin kein Experte in Shell, hab nur das Script von meinem Kollegen bekommen, der meinte, dass ich mit sudo das Script als Benutzer root ausführe. Ist das Korrekt und bringt mir das was?
 
Sudo (su "do") allows a system administrator to delegate authority to give certain users (or groups of users) the ability to run some (or all) commands as root or another user while providing an audit trail of the commands and their arguments.

Mehr gibts hier wenn dir langweilig ist
http://www.sudo.ws/

Wegen dem eigentlichen Problem :

Wurstel dich mal hier durch (kommentare) vllt. hilfts dir weiter
http://php.net/manual/en/function.exec.php

n besseren Vorschlag hab ich grade nicht sorry :(
 
hast du chmod beim script auf 755 bzw. 777 (eigtl. übertrieben)?

Kann der ?apache? das script verzeichnis überhaupt erreichen?

Stichwort
open_basedir
safemode
 
Script hat chmod 777!

was komisch ist, mit

Code:
exec('ls -l',$ret);
print_r($ret);

bekomme ich die richtigen (erwarteten) Werte...
 
Hast du denn den command auf shell mal getestet?

Sudo wird bei den verschiedenen Linux Distributionen unterschiedlich gehandhabt.
Bei Fedora zum Beispiel ist es nicht "sudo" sondern nur "su". "sudo" dagegen fordert den Benutzer dann auf sich zu authentifizieren.
Dann ist auch die Frage ob der apache user auch in der sudoer Gruppe ist.
Oder falls du einen Windows Server hast: Windows kennt kein sudo...

Es hilft aber nicht viel zu raten es wäre Hilfreich das System zu kennen auf dem der command ausgeführt werden soll.
Und wenn möglich diese auf dem System zuerst testen oder zur Not auf einem vergleichbaren
 
Zurück