PHPを使用してpgp暗号化コマンドを「実行」したいと思います。コマンドラインに関係なく、エラー64(パーサーエラー)または162(エンコード中の完全な失敗)のいずれかが発生します。そこで、PHPプログラム内のコマンドラインをこの単純な指紋表示に減らしましたが、それでもエラーが発生します。
exec("/opt/pgp/bin/pgp --fingerprint", $results);
コマンドラインで「/opt/ pgp / bin / pgp--fingerprint」を実行すると、「2つのキーが見つかりました」と期待どおりの表示が得られます。しかし、PHPで同じexecを実行すると、パーサーエラー64が発生します。文字列コマンドに対して「\ n」を試しましたが、違いはありません。ユーザーは、pgpの実行権限を持つブラウザで「nobody」として実行されます。(pgpが少なくとも起動していなかった場合は、「パーサーエラー」も表示されません。)
PHPでpgpを実行するために特別なことをする必要がありますか?
データファイルを実際に暗号化する試みに戻りました。これは、pgpが作成する「status-file」出力です。「test.txt」を暗号化しようとしているファイルの「permissiondenied」の最後の行にエラーがはっきりと示されています。それは偽物です。私はそのファイルに全世界のr/wを付与しましたが、ステータスがコンテンツを暗号化したと言っているため、ファイルに明確にアクセスします。それで、本当に問題は、許可が拒否されているのは何ですか?
その他の情報:pgpを呼び出すこのPHPスクリプトに対してコマンドラインからPHPを実行すると、正常に機能します。ファイルは暗号化されます。また、PERLは、ブラウザーから呼び出されたときに同じコマンドを実行します(SYSTEM()を使用)。ただし、ブラウザを使用してこのPHPスクリプトを呼び出すと、失敗します。明らかに、「誰も」として実行されているいくつかの許可の問題があります。
/export/home/pgphome/.pgp/pubring.pkr:open keyrings(1006:public keyring)/export/home/pgphome/.pgp/secring.skr:open keyrings(1007:private keyring)0x221DC947:encrypt(1030:キーが受信者リストに追加されました)/export/home/eckankar/dev/www/info/test.txt:encrypt(3048:暗号AES-128で暗号化されたデータ)/ export / home / eckankar / dev / www / info/test。 txt:encrypt(3124:許可が拒否されました)
背景として、PHP exec()コマンドの引数があります。/opt/pgp/bin/pgp--encrypt /export/home/eckankar/dev/inc/test.txt --output / export / home / eckankar / dev /www/info/test.xxx -r membership --overwrite remove --home-dir /export/home/pgphome/.pgp -v --status-file /export/home/eckankar/dev/inc/test.txt .err
このコマンドのフォルダ/ディレクトリはすべて、「rwx」をワールドに付与しています。
ブラウザからではなくコマンドライン(/opt/csw/php5/bin/php test.php)から実行した場合と同様に、暗号化が成功した場合のステータス出力ファイルは次のようになります。
pgp:encrypt(3157:現在の現地時間2009-06-30T11:51:17-05:00)/export/home/pgphome/.pgp/pubring.pkr:open keyrings(1006:public keyring)/ export / home / pgphome / .pgp / secring.skr:open keyrings(1007:private keyring)0x221DC947:encrypt(1030:keyが受信者リストに追加されました)/export/home/eckankar/dev/inc/test.txt:encrypt(3048:data暗号化暗号AES-128を使用)/export/home/eckankar/dev/inc/test.txt:encrypt(0:出力ファイル/export/home/eckankar/dev/inc/test.txt.pgp)