如何从php网页执行程序?

时间:2012-07-02 15:24:59

标签: php ssh exec sudo

摘要

我在运行某个程序的Linux机器上运行apache。我想从php页面调用该程序并获取输出。

特殊约束

该程序需要运行某些环境变量,例如LD_LIBRARY_PATH,带有库的路径和额外的变量。在非 apache 用户的计算机上为用户 X 定义了环境。

建议的选项

到目前为止,我已经考虑过以下选项(并不意味着它们都是智能或安全的):

  1. 允许用户 apache 以用户 X 运行程序(以允许拥有完整环境的方式)。食谱 ?
  2. 修改用户 apache 的环境。我不明白为什么因为apache是​​ nologin 用户。
  3. 以具有适当环境的用户身份SSH到另一台计算机。这意味着Web服务器和本机之间没有密码(公钥/私钥)连接。危险吗 ?
  4. 问题

    • 我是否忽视了更简单或更好的选择?
    • 您会使用什么选项?为什么?

2 个答案:

答案 0 :(得分:0)

如果你知道你需要设置的环境变量的(值),你可以简单地将它们添加到你的exec中

exec('LD_LIBRARY_PATH="/you/paths"; OTHER_VAR="baz"; /your/bin');

将使用给定的ENV变量集执行/your/bin,但作为apache用户,而不是用户 X 。如果程序需要以特定用户身份运行,那么SSH似乎不是一个坏主意。

答案 1 :(得分:0)

您是否可以完全控制此平台?

您可以查看suexecmpm-iTK

您可以在虚拟主机中配置上述内容,并将运行用户或组设置为有权访问二进制文件的用户或组。

在当前设置中,您可以创建一个新组,将apache用户/组分配给所述组,将组应用于要执行的二进制文件,具有读/写或读/执行权限,并让好时光角色