[PHP-users 22895]GNUpg の暗号化の実行

SENSHU @ yudo senshu @ yudo.jp
2004年 8月 2日 (月) 11:09:47 JST


久しぶりに投稿させていただきます、千秋と申します。

GNUpgをPHPから実行しようとして、どうしてもはまりから抜け出せずにいます。
おわかりの方がいらっしゃいましたら、お知恵をお貸しください。

#同様の質問を、GNUpgnewsjapanにも投稿させて頂いています。

状況は、あるファイルを暗号化する時、コマンドラインから直接打ち込むと
正常にでき、また、シェルスクリプトを用意してコマンドラインからそれを実行した場合も
正常にできるが、PHPからシェルスクリプトを実行した場合に、暗号化されたファイルが
書き出されない、というものです。


環境
vine linux 2.6
gpg 1.2.4
PHP 4.2.4
#社内用のテストサーバです


例えば下記のようなシェルスクリプトを用意しておきます。


script1.sh
---------------------------------------------
#!/bin/sh

gpg --yes -o /home/test/log/otp1.asc -r TEST_9 -ea /home/test/log/otp.txt
-----------------------------------------------

これをコマンドラインから

% ./script1.sh

として実行すると、正常に otp1.asc が書き出されます。
もちろん、
$gpg --yes -o /home/test/log/otp1.asc -r TEST_9 -ea /home/test/log/otp.txt
として直接コマンドラインからでも正常に動きます。

これをPHP上から、
<?PHP
$gpg = `./script1.sh`;
?>
とすると、なぜか otp1.asc というファイルが書き出されません。


ためしに、
<?PHP
$gpg = `gpg --yes -o /home/test/log/otp1.asc -r TEST_9 -ea /home/test/log/otp.txt`;
?>
こうした場合も同じく、 otp1.asc は書き出されません。


また、script1.sh を、こんなふうに書き換えて、

script1.sh
---------------------------------------------
#!/bin/sh

gpg --yes -o /home/test/log/otp1.asc -r TEST_9 -ea /home/test/log/otp.txt > log.txt

ls -la > ls.txt
-----------------------------------------------

同じく
<?PHP
$gpg = `./script1.sh`;
?>
を実行してみると、
log.txt という 0byte のファイルが作成されており、ls.txt には、ちゃんと
ls -la をした結果が書き出されていたので、script1.sh自体は実行されている
ようでした。


ユーザーは、apachの実行ユーザー、コマンドラインからの入力、gpg の鍵の所有者とも
同じです。


#PHPからシェルスクリプトが動いている以上、PHPではなくGNUpgの話題かも知れませんが、ヒントだけでもありましたらお願いいたし
ます。

お手数をお掛けしますが、よろしくお願いいたします。



PHP-users メーリングリストの案内