シェルスクリプトをPHPから実行できない


SSLのCSRを生成するシェルスクリプトをPHP(WEB)から実行するとなぜかCSRが生成されません
コンソール上から

sh hoge.sh

のようにして実行すると、csrが同じディレクトリ内に生成されます

もしやshコマンドはwwwユーザでは発行できない?
と思い、/etc/sudoersにwwwユーザをパスなしでsudoコマンドを使えるようにし

exec("sudo sh hoge.sh")

のようにPHPから実行してみましたがそれでもできず・・・

あと確認した内容としてはCSRのファイル生成先のディレクトリのパーミッション
(現在適当に777になっています)とシェルスクリプトのファイルの実行権限
(こちらは現在644となっています)を確認しています

ソースをお見せしていないのでわかりづらいと思いますが
検討がつく方がいらっしゃいましたらご指導お願い致します

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/10/23 17:20:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:t_shiono No.1

回答回数256ベストアンサー獲得回数22

ポイント60pt

どこまで正しく動作していることを確認していますか?

1.sh自体が起動されていない

2.shは起動されているが、指定したスクリプトが実行されていない

3.shで正しく指定したスクリプトが実行されているが、スクリプト中の一部の処理が正しく実行されない。

まずは、このあたりを確認してみてはいかがでしょうか?

1であれば、パーミッション、あるいは、セーフモードの関係でshが実行できるような環境になっていない

2,3であれば、パスの指定がおかしい、あるいは、パーミッションの問題があやしいきがします。


何かの参考になれば。

id:jayz

execコマンドで結果を受け取っているのですが

スクリプトの最後まで実行されているように見えます

exec($cmd, $op, $ret);

echo "

";

print_r($op);

echo "

";

---

Array

(

[0] => spawn openssl req -new -key www.hoge.jp.key -passin pass:1234 -out www.hoge.jp.csr

[1] => You are about to be asked to enter information that will be incorporated

[2] => into your certificate request.

[3] => What you are about to enter is what is called a Distinguished Name or a DN.

[4] => There are quite a few fields but you can leave some blank

[5] => For some fields there will be a default value,

[6] => If you enter '.', the field will be left blank.

[7] => -----

[8] => Country Name (2 letter code) [GB]:JP

[9] => State or Province Name (full name) [Berkshire]:Tokyo

[10] => Locality Name (eg, city) [Newbury]:Minato-ku

[11] => Organization Name (eg, company) [My Company Ltd]:hoge

[12] => Organizational Unit Name (eg, section) []:hoge group

[13] => Common Name (eg, your name or your server's hostname) []:www.hoge.jp

[14] => Email Address []:

[15] =>

[16] => Please enter the following 'extra' attributes

[17] => to be sent with your certificate request

[18] => A challenge password []:

[19] => An optional company name []:

)

---

2008/10/16 17:34:22
id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント10pt
exec("sudo sh hoge.sh < /dev/null");

にしてみるか、expect 越しにやらないといけないかも。

Manpage of EXPECT

id:zzz_1980 No.3

回答回数492ベストアンサー獲得回数64

ポイント10pt

カレントディレクトリが設定されていないか、

設定されているデータ書き込み用ディレクトリに書き込み権限がないのでは?

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません