0

概括

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

特殊约束

该程序需要某些环境变量才能运行,例如带有库路径的 LD_LIBRARY_PATH 以及额外的变量。该环境是为机器上的非apache用户的用户X定义的。

提议的选项

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

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

问题

  • 我是否忽略了更简单或更好的选择?
  • 你会使用什么选项,为什么?
4

2 回答 2

0

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

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

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

于 2012-07-02T15:40:24.010 回答
0

你能完全控制这个平台吗?

您可以查看suexecmpm-iTK

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

在您当前的设置中,您可以创建一个新组,将 apache 用户/组分配给该组,将组应用到您要以读/写或读/执行权限执行的二进制文件,并让好时光发挥作用。

于 2012-07-02T16:44:05.733 回答