• 締切済み

php5でjavacを含むシェルの実行ができない

こんにちは。シェル、php5初心者です。 まずはそれぞれのソースを記します。 j.sh ~~~~~~~~~~~~~~~~~~~~~~ #!/bin/bash javac Hello.java java Hello ~~~~~~~~~~~~~~~~~~~~~~ Hello.java ~~~~~~~~~~~~~~~~~~~~~~ public class Hello { public static void main(String[] args) { System.out.println("Hello, World"); } } ~~~~~~~~~~~~~~~~~~~~~~ test.php ~~~~~~~~~~~~~~~~~~~~~~ <?php $output = shell_exec('./j.sh'); echo "<pre>$output</pre>"; ?> ~~~~~~~~~~~~~~~~~~~~~~ 以上のプログラムを使用しtest.phpを実行したときにshell_exec関数によってWebブラウザ上にHello,Worldと表示させたいのですが、コンパイルすらされていないみたいです。どうしたらよいでしょうか。 端末から./j.shのようにシェルを実行するとしっかりとHello,Worldと結果が返ってくるのですが。 ちなみにjavacを含まないシェル(ls -l,cpなど)はphpから実行できました。 どうかよろしくお願いします。 os vine linux 4.3

  • yuya9
  • お礼率100% (3/3)
  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

noname#208124
noname#208124
回答No.1

httpdを実行してるアカウントが違う所為でjavacがPATHに入って無いとか カレントディレクトリが違う所為でHello.java見つけられないとか シェルスクリプトで 2>&1 して、エラーも全部取ってみたら?

yuya9
質問者

お礼

御回答有難うございます。 httpdを実行しているアカウントとグループがapacheになっており、それを コマンドラインから入力するときと同じものに書き換えたのですが、 javacはWeb上では動きませんでした。 httpd.confのcgi環境変数の設定などが関係しているのでしょうか。

関連するQ&A

  • PHPからシェルが動作しない

     PHPを通して外部コマンドを実行したいのですが、うまく動作してくれません。  具体的には、あるページでボタンを押したら、IPMessengerでメッセージを飛ばす機能(コマンド名:tipmsg)を実装したいのです。  シェルスクリプトは「コンソール」上では、きちんと動作してくれます。  例(shell.sh)  echo HELLO | tipmsg -e -u anyuser  また、コンソール上で「php」を直接動かしても、きちんと動作してくれます。(「php doshell.php」)  例(doshell.php) <? echo "Hello"; #動作するかどうかを確認するための表示させる system("shell.sh"); ?>  両方とも、コンソール上では、きちんと動作してくれるのですが、ブラウザ上からだと動作してくれません。  ちなみに、PHPからシェルを呼び出す以下のコマンドもすべて試しました。  exec("./shell.sh")  system("./shell.sh")  shell_exec("./shell.sh")  他にも環境変数をいじったり、アドミッションを調整したりもしましたが、まったく目的どおりの動作をしてくれません。  もしも、わかる方がいたらご教授のほど、お願いします。

    • 締切済み
    • PHP
  • PHP シェルスクリプト 引数

    失礼します。現在PHPからシェルスクリプトを引数を付けて実行し、戻り値で確認が出来るか試しているのですがなかなか参考になる記事がなく実現が出来ない状態です 調べたところ、 phpからhoge.shというシェルファイルをargという引数で実行したいとします。 引数を"'. .'"で囲う事で、引数を渡せるようです。 $output = shell_exec('/bin/sh /path/to/hoge.sh "'.$arg.'"') var_dump($output) 上記のような記事を見つけたのですがhoge.shはどのように$argを受け取り、戻り値を渡しているのでしょうか?また、$argの値の中身は渡す引数の内容という認識で正しいのでしょうか?サンプルコードなどがあるとうれしいです。 ご教授よろしくお願い致します。

  • PHPからシェルコマンドの実行

    PHPからシェルコマンドを実行したいのですが SSHやSCPコマンドが使えません。 phpからlsなどは問題なく実行できます。 具体的には以下のように書いています。 `scp test.log user@host:/home/hoge`; shell_exec()を使っても実行されませんでした。 環境は以下のとおりです。 PHP 5.4.17 CentOS 5.8 sshやscpコマンドをphpから実行するには何か特別な方法が必要なのでしょうか。 ご存知の方、教えてください。

    • ベストアンサー
    • PHP
  • シェルスクリプトからPHP実行

    シェルスクリプト(bash)内で、以下のようにPHPを呼んだ場合、 その次の処理がPHPの終了を待たずに実行されるようなのですが、 どうしてでしょうか? #!\bin\bash /usr/local/php4/bin/php /home/test.php echo "test!" 以上 なぜか test! という表示がPHPの処理中に出るように思えます。

  • シェルスクリプトでPHPを実行したい

    シェルスクリプトでPHPを実行したいのですが、うまくできません。 centos5でcrontabに 20 0 * * * /bin/sh /var/www/html/test/test.sh と登録しています。 cronのlogをみたところ Dec 12 00:20:01 localhost crond[19060]: (root) CMD (/bin/sh /var/www/html/test/test.sh) と記録されていてここまでは問題ないように思えます。 test.shの中身は #!/bin/sh cd /var/www/html/test/ php -f daily.php > result exit になっています。 daily.phpが実行されないので、daily.phpに何かおかしなところがあるのかと思い daily.phpを直接ブラウザから起動してみたところ問題なく処理されました。 このような経緯でtest.shの中身が間違っていると思っているのですがどこが間違っているのか分かりません。 どなたかアドバイス頂けると助かります。

  • Linuxでシェルスクリプトがフルパスだと実行できない

    Linuxでシェルスクリプトがフルパスだと実行できない こんにちは 現在linuxでシェルスクリプトを記載していて、やっと出来た!と思ったら、なぜかフルパスで実行すると失敗します。 中身は例えば #!bin/sh echo "hello" とし、ファイル名をtest.shとします。 実行時にカレントからだと上手くいきます。 ./test.sh ただし、フルパスで実行するとうまくいきません。 ./home/user/test.sh エラーは以下 bash: ./home/dv3/tet.sh:No such file or directory 所有者はrootでグループもrootにしてあります。 シェルの権限は755にして、rootで実行しています。 なぜカレントだと上手くいき、フルパスだと上手くいかないのでしょうか? パスが必要なコマンドも入っていないのに。。。 どなたかご教授いただけると幸いです。 宜しくお願い致します。

  • シェルスクリプト(Bash偏)の実行ファイルに関するご質問があります。

    シェルスクリプト(Bash偏)の実行ファイルに関するご質問があります。 ファイル名を変更するシェルスクリプトをbashで行おうとプログラムを作成したのですが、 実行するとbad interpreter: ディレクトリではありません とメッセージが出て終了します。記述に誤りがあるのか、実行の仕方が悪いのか分かりません。教えて下さい。 シェルの記述内容は ファイル名をtest.sh #!/bin/bash/ -f mv A.txt A.ori exit 実行方法として #>chmod x+a test.sh #>./test.sh で行いました。そうしたら、bad interpreter: ディレクトリーではありません とメッセージが出ます。 ちなみに #>. test.sh で実行するとターミナルがシェルの実行と同時に閉じてしまいますが、シェルを実行したディレクトリーを確認すると、処理が終わっておりました。

  • 【Linux】シェルの実行方法を教えて下さい。

    【Linux】シェルの実行方法を教えて下さい。 ファイルの中身が#!/bin/bashで始まる拡張子shのシェルがあります。 これを実行するには、どのようなコマンドを打てばよいのでしょうか? 1.rootでログイン。 2.test.shがあるフォルダに、cdで移動する。 3.test.shと入力し、Enterキーを押す。 ↑みたいな感じで良いのでしょうか。 テスト用サーバなので、最悪壊しても良いと上司に言われましたが、 なにぶん時間がないため質問させていただきました。 Redhatでバージョンが3か4だったと思います。 よろしくお願いします。

  • PHPからシェルスクリプトを実行

    サーバ:XREA・CORESERVER PHPからシェルスクリプトを実行することは可能ですか? exec関数などがsafemodeでは動かないとのことなので、phpをcgiとして動かしているのですが、 どうもうまくいきません…。 というのも、lsなどのコマンドを実行しても、command not foundになってしまいます。 どなたか分かる方いらっしゃいますか?

    • 締切済み
    • PHP
  • シェルが実行されません

    WWWユーザから、 Process process = Runtime.getRuntime().exec("java -classpath /xx/xx/xx /export/home/test/B001"); は動くのですが、 Process process = Runtime.getRuntime().exec("java /export/home/test/B001.sh"); のようにシェルを呼び出しても動作しません。 また、hulftのジョブ起動からもシェルが動かないのですが、原因は何が考えられますでしょうか? シェルのパーミッションは755なのですが・・

専門家に質問してみよう