如何通过浏览器在php中执行系统调用?

时间:2013-07-07 20:25:07

标签: php c apache shell-exec gnupg

我有一个C程序进行系统调用(centOS 6.0)来加密文件,我的代码是:

#include <stdlib.h>
int main () {
 system ("gpg -c --batch --passphrase mypass file.txt");
 return 0;
}

可执行对象称为encrypt_file 当我直接通过CLI运行./encrypt_file时,它运行得很完美,我获得了我的file.txt.gpg,但是当我尝试通过浏览器执行它时,我得不到任何响应。 php中的代码:

shell_exec("./encrypt_file");

我选择制作ac程序的原因是我需要密码才能在代码中但不可见,当我删除包含密码的.c文件时,我剩下的就是我的.exe并且没有可见的密码短语。

我已通过发出以下内容更改了对apache用户的权限:

chown apache.apache /var/www/html/

并在/ etc / sudoers中添加了下一行:

apache   ALL=(ALL)    NOPASSWD:ALL

注意:我遇到的唯一命令是gpg,我可以使用我需要使用的任何其他命令进行系统调用,我甚至可以运行python脚本,以及其他没有的C程序不包含与gpg相关的任何内容。

我希望快速回复!我需要使用很多这个encrypt_file!

1 个答案:

答案 0 :(得分:0)

检查/ var / log / httpd / error_log中的error_log我看到了这一行:

gpg: Fatal: can't create directory `/var/www/.gnupg': Permission denied

然后我在这个网站找到了一个解决方案 - &gt; http://gnupg.10057.n7.nabble.com/Exi...pt-td7342.html

我添加了--homedir选项和我在gache命令的apache的error.log中找到的PATH,它完美地运行了!

感谢大家!