2016-05-03 5 views
0

PHPまたはHTMLからシェルスクリプトファイルを実行する方法。 shファイルはlocalhostディレクトリの外側にあり、最初のshファイルによって起動される他の多くのshファイルがあります。php/htmlからシェルスクリプトを実行するにはどうすればよいですか?

は、ローカルホストのディレクトリが /opt/lampp/htdocs/xampp/test で、shのファイルの場所が/home/user/scripts/run.shであると言います。

run.sh/opt/lampp/htdocs/xampp/test/uploadから/home/user/scripts/fileにアップロードされたファイルをコピーし、他のファイル.shを実行します。

私は

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

様および

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

が、運がない成功を持つ多くのPHPの方法を試してみました。 他のスクリプトやファイルに依存しているので、shファイルをCGIディレクトリに置くことができませんでした。現在表示されているディレクトリからスクリプトを実行するにはどうすればいいですか?

+0

あなたが/ 'CD(CHDIR(「/ホーム/ユーザー/スクリプト/」)またはもしくはshell_execのいずれかを使用して、シェルスクリプトを実行する前に、PHPでの作業ディレクトリを変更しようとしている。そして、putenv関数にすることをコピー&ペーストhome/user/script/sh /home/user/script/run.sh ')? – gmfm

+0

動作していないため、何も実行していません。 – anonymous

答えて

0

PHPからスクリプトを実行しているユーザーとして環境変数を設定していない可能性が高いです。これはおそらくusername group apache:apacheです。 PATHの環境変数をいくつか設定して、実行可能ファイルがどこにあるかを知るようにしてください。あなたは、代わり/usr/bin/shshを指すことができます:

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

またはサーバーとecho $PATHにログオン。

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

私は変数をputenvにセットしましたが、run.shではechoコマンドだけを実行していましたが、run.shは他のbashスクリプトを実行するためのリンクを持っています。それは実行されていません – anonymous

+0

素晴らしいので、今実行している。今度は、bashスクリプトであなたの相対的なパスを調べることです:http://unix.stackexchange.com/questions/17717/refer-to-a-file-under-the-same-directory-of-a-script-found-あなたはおそらく、スクリプトへの相対パスを、あなたのbashとapache内で呼び出し、run.shスクリプトを呼び出して、どこにいるのか分からないでしょう。私は私の答えがあなたの質問に答えると思います。あなたは今実行スクリプトを持っています。 – DataHerder

関連する問題