如何从 php 网页执行程序


How to execute a program from a php web page?

摘要

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

特殊约束

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

拟议的备选办法

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

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

问题

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

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

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

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

你完全控制这个平台吗?

你可以看看suexec,或mpm-iTK

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

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