2016-05-03 10 views
0

So führen Sie Shell-Skriptdateien aus PHP oder HTML aus. Die sh-Datei befindet sich außerhalb des localhost-Verzeichnisses und es gibt viele andere sh-Dateien, die von der ersten sh-Datei initiiert werden.Wie führe ich ein Shell-Skript von PHP/HTML aus?

sagen, dass das lokale Host-Verzeichnis /opt/lampp/htdocs/xampp/test und die Lage der sh-Datei ist /home/user/scripts/run.sh ist.

run.sh kopiert einige Dateien hochgeladen von /opt/lampp/htdocs/xampp/test/upload zu /home/user/scripts/file und führen Sie einige andere .sh Dateien.

Ich habe ohne Erfolg viele PHP Methoden versucht wie

<?php $output = shell_exec('sh /home/user/script/run.sh'); echo "$output"; ?> 

und

<?php 
shell_exec("/home/user/server/run.sh"); 
?> 

aber kein Glück. Ich konnte die sh-Datei nicht im CGI-Verzeichnis ablegen, da sie von anderen Skripten und Dateien abhängig ist. Wie führe ich das Skript aus dem Verzeichnis, das es gerade präsentiert.

+0

haben Sie versucht, Arbeitsverzeichnisse in PHP ändern, bevor das Shell-Skript ausgeführt wird, indem entweder chdir ("/ home/user/scripts /") oder shell_exec ('cd/home/benutzer/script/sh /home/user/script/run.sh ')? – gmfm

+0

Nicht funktioniert es führt nichts aus. – anonymous

Antwort

0

Es ist höchstwahrscheinlich der Fall, dass Sie keine Umgebungsvariablen als Benutzer eingerichtet haben, der das Skript von PHP ausführt. Es ist wahrscheinlich Benutzername Gruppe Apache: Apache. Sie sollten einige Umgebungsvariablen für PATH einrichten, damit es weiß, wo sich die ausführbaren Dateien befinden. Sie könnten alternativ sh-/usr/bin/sh zeigen:

<?php $output = shell_exec('/usr/bin/sh /home/user/script/run.sh'); echo "$output"; ?>

oder sich auf den Server und echo $PATH. Dann kopieren Sie das Einfügen in die putenv Funktion:

putenv('PATH={your_paths}'); 
$output = shell_exec('sh /home/user/script/run.sh'); echo "$output"; 
+0

Ich setze die Variablen in putenv, aber es führt nur den Befehl echo in run.sh aus, aber run.sh hat einen Link, um andere Bash-Skripte auszuführen (mit ./ nicht mit sh, da sh nicht für diese Datei funktioniert) das ist nicht ausgeführt – anonymous

+0

Großartig, so haben Sie es jetzt ausführen. Jetzt geht es darum, den relativen Pfad im Bash-Scripting herauszufinden: http://unix.stackexchange.com/questions/17717/refer-to-a-file-under-the-same-directory-of-a-script-found- In-Pfad, Sie haben wahrscheinlich mit relativen Pfaden zu den Skripten Ihre Aufruf innerhalb Ihrer Bash und Apache, Aufruf der run.sh-Skript, weiß nicht, wo sie sind. Ich denke, meine Antwort beantwortet Ihre Frage und Sie haben jetzt ein ausführendes Skript. – DataHerder

Verwandte Themen