首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP exec pgp命令

PHP exec pgp命令
EN

Stack Overflow用户
提问于 2009-06-29 18:24:05
回答 3查看 4.2K关注 0票数 1

我想使用PHP 'exec‘一个pgp加密命令。不管命令行如何,我都会得到一个错误64 (解析器错误)或162 (在编码期间完全失败)。因此,我已经将PHP程序中的命令行简化为这个简单的指纹显示,它仍然会出错:

代码语言:javascript
复制
exec("/opt/pgp/bin/pgp --fingerprint", $results);

如果我在命令行上运行"/opt/pgp/bin/pgp -指纹“,就会得到”找到两个键“和预期的显示。但是PHP下的同一个exec给出了解析器错误64。我对string命令尝试了"\n“,这并没有什么区别。用户在具有pgp执行权限的浏览器中以“任何人”的身份运行。(如果pgp至少没有启动,我甚至不会从它中看到‘解析器错误’。)

为了在PHP下运行pgp,我需要做什么特别的事情吗?

我又开始尝试对数据文件进行加密。下面是pgp创建的“状态文件”输出。它清楚地显示了我试图加密的'test.txt‘文件的最后一行“拒绝权限”上的错误。那是假的。我已经将世界范围的r/w都授予了这个文件,它很清楚地访问了它,因为它的状态表明它已经加密了内容。所以,真正的问题是,什么是被拒绝的许可?

其他一些信息:如果我从命令行对这个调用pgp的PHP脚本运行PHP,它就可以正常工作--文件会被加密。当从浏览器调用ALso时,PERL运行相同的命令(使用SYSTEM())。但是,当浏览器调用这个PHP脚本时,它会失败。显然,作为“无人”运行存在一些权限问题。

/export/home/pgphome/..pgp/pubring.pkr:公开密钥环(1006:公共密钥环)/导出/home/pgphome/..pgp/secring.skr:开放式密钥环(1007:专用密钥环) 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 ()命令的论据: /opt/pgp/bin/pgp -加密/导出/home/eckankar/dev/inc/test.txt-output /export/home/eckankar/dev/www/info/test.xxx -r成员--重写删除--home-dir /export/home/pgphome/.pgp -v -状态-文件/导出/home/eckankar/dev/inc/test.txt.err

ALl此命令中的文件夹/目录已将'rwx‘授予世界。

如果从命令行(/opt/csw/php 5/bin/php test.php)运行,而不是通过浏览器运行,则当加密成功时,状态输出文件如下所示:

pgp:加密(3157:当前当地时间2009-06-30T11:51:17-05:00) /export/home/pgphome/.pgp/.pgp/pubring.pkr:公开密钥环(1006:公共密钥环)/导出/home/pgphome/.pgp/secring.skr:打开密钥环(1007:私人密钥环) 0x221DC947:encrypt (1030:密钥添加到收件人列表) /export/home/eckankar/dev/inc/test.txt:encrypt (3048:用密码AES-128加密的数据)/导出/home/eckankar/dev/inc//test.txt:encrypt (0:输出文件/导出/home/eckankar/dev/inc/test.txt.pgp)

EN

回答 3

Stack Overflow用户

发布于 2009-06-30 23:17:26

答案是:需要在命令行中指定一个-temp。

票数 1
EN

Stack Overflow用户

发布于 2009-06-29 18:30:07

这个PHP脚本运行在什么执行上下文中?交互命令行,cron作业,Web服务器(我不希望如此)?

根据对此的答案,我可能会开始研究PGP所依赖的环境变量,这些变量在从这个脚本运行时没有设置。

票数 0
EN

Stack Overflow用户

发布于 2015-05-21 20:05:04

我知道这很旧,但我被咬了。(pgp 8.5)

正如Jim所说,这是一个目录权限问题。但是至少pgp 8.5不允许您以任何方式设置tmpdir。

我的解决方案(伪码):

代码语言:javascript
复制
save cwd
chdir(/tmp/)
system()/exec() pgp command
chdir(saved_cwd)

奇怪的是,pgp强制在cwd中创建tmp dir,但是我没有看到任何影响位置的标志。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1059723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档