[PHP-users 26949] Re: proc_open()を使用してGnuPGの復号化をしたい
canada-php@kaede.to
canada-php @ kaede.to
2005年 9月 22日 (木) 01:13:35 JST
かなだです。
matsui 9999さんの<BAY15-F9DD7D7B012F567045745396940 @ phx.gbl>から
> >batchmodeを追っかけてみると、gpgのオプ
> >ションに--batchをつけるとbatchmodeがセットされる(で、
> >ttypfpがstderrにセットされる)ようです(解決になるかど
> >うか分かりませんが)。
>
> batchモード(非対話モード)で実行してみました。
> パスフレーズ有の鍵でも、この方法だと復号化できました。
やはりその部分だったようですね。ということは、
> 今は何故、パスフレーズ有の鍵で失敗するのか気になっ
> ています。
対話モードの時にgpgがTERMDEVICEを開こうとして失敗す
るのが原因だと思われます。
ソースコードを見たところ、なぜか、TERMDEVICEが何であれ
「cannot open /dev/tty:」というメッセージを出すよう
になっているので、必ずしも/dev/ttyのオープンに失敗し
ているとは限らなさそうです。
util/ttyio.c
| ttyfp = batchmode? stderr : fopen(TERMDEVICE, "r+");
| if( !ttyfp ) {
| log_error("cannot open /dev/tty: %s\n", strerror(errno) );
ですので、該当する部分を書き直してgpgをコンパイルし
なおすか、TERMDEVICEに該当するデバイスを準備してやれ
ばエラーはなくなる気がします。
ともあれまずコンパイル時にTERMDEVICEが何に定義されて
いたのか確認してみることをお勧めします。
--
かなだまさかつ
PHP-users メーリングリストの案内