2016-07-18 18 views
0

Ich versuche zu lernen, Shell-Skripte aus PHP-Code auszuführen. Also habe ich ein Testprogramm erstellt, um ein Bash-Skript innerhalb von PHP auszuführen. Es hat jedoch keinen Effekt. Der entsprechende Code ist unten gezeigt.PHP shell_exec Befehl funktioniert nicht

<?php 
....... 
shell_exec('/bin/bash /var/www/html/just_touch.sh'); 
?> 

Das just_touch.sh Skript erstellt gerade eine neue Datei, wie wie unten gezeigt.

touch /home/user/some.txt 

Ich erwarte Datei /home/user/some.txt nach der Ausführung zu haben, aber nein, ist es nicht gemacht. Was für einen Fehler mache ich?

S.S. Der folgende Code funktioniert jedoch.

$output = shell_exec('ls /home/user'); 
echo $output; 

Hat das etwas mit Berechtigungen zu tun?

Darüber hinaus bemerke ich, dass, während dies druckt "Kannst du mich sehen?".

$output = shell_exec('echo Can you see me?'); 
echo $output; 

Das geht nicht!

shell_exec('echo Can you see me?') 

Was geht hier vor?

+1

Geben Sie den vollständigen Pfad zu Ihrem /somedir/just_touch.sh –

+0

Es funktioniert immer noch nicht. Gibt es eine Möglichkeit zu sehen, welcher Fehler von Mozilla ausgeht? – pythonic

+0

Um etwas in Mozilla zu sehen, benutzen Sie 'passthru()' anstelle von 'shell_exec()'. http://php.net/manual/en/function.passthru.php –

Antwort

1

Stderr ist verloren, wenn shell_exec verwendet wird. Vielleicht möchten Sie:

shell_exec('/bin/bash /var/www/html/just_touch.sh 2>&1'); 
+0

Sehr nützlich in der Tat, weil jetzt sehe ich die Nachricht, berühren Sie: '/home/user/some.txt' nicht berühren: Berechtigung verweigert. Diese Berechtigungsrechte bringen mich allerdings um :(! Do, weißt du sowieso, um diese Rechte zu lösen? – pythonic

+0

Setze das Zielverzeichnis '/ home/user' vom Webserver-Benutzer schreibbar. Dh mache es gruppenschreibbar:' chmod g + w/home/user' und setze die Gruppe des Home-Verzeichnisses auf die selbe Gruppe, in der der Webserver läuft: 'chgrp wwwrun/home/user' –

+0

Ich verstehe. Im Moment bin ich durch Setzen von Berechtigungen auf 777 davongekommen. Aber ich denke das wäre sehr unsicher. Ich werde mit deiner Annäherung auschecken. – pythonic