2016-07-18 14 views
0

PHPコード内からシェルスクリプトを実行する方法を学んでいます。そこで、PHP内からbashスクリプトを実行するためのテストプログラムを作成しました。ただし、効果はありません。関連するコードを以下に示します。PHP shell_execコマンドが機能しません

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

just_touch.shスクリプトは、次のように新しいファイルを作成するだけです。

touch /home/user/some.txt 

実行後にファイル/home/user/some.txtがありますが、作成されていません。どのような間違い、私はやっている?

P.S:次のコードは機能します。

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

これは許可とは関係ありますか?

さらに、私は、「あなたは私を見ることができますか?」と印刷しています。

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

これはありません。

shell_exec('echo Can you see me?') 

ここでは何が起こっていますか?

+1

/somedir/just_touch.shへのフルパスを指定してください。 –

+0

まだ動作しません。 Mozillaからどのようなエラーが発生するのかを確認する方法はありますか? – pythonic

+0

Mozillaで何かを見るには、 'shell_exec()'の代わりに 'passthru()'を使います。 http://php.net/manual/en/function.passthru.php –

答えて

1

shell_execを使用すると、Stderrが失われます。

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

本当に便利なのは、メッセージが表示されたので、touch: '/home/user/some.txt'に触れることができません。許可が拒否されました。 – pythonic

+0

Webサーバーユーザーがターゲットディレクトリ '/ home/user'に書き込み権限を与えるようにしてください。グループ書き込み可能にしてください。' chmod g + w/home/user'とし、ホームディレクトリのグループをWebサーバが稼動しているのと同じグループに設定してください: 'chgrp wwwrun/home/user' –

+0

私は777に権限を設定しました。私はあなたのアプローチでチェックアウトします。 – pythonic

関連する問題