在linux上通过来自.php的.sh运行节点文件


Running a node file, via a .sh from .php on linux

我正在尝试从php运行一个节点文件。以下作品。。。

从终端运行节点运行从终端运行节点文件的.sh从php运行一个.sh,写入一个文本文件(因此php成功地触发了.sh)

但是,当我运行.sh文件时,从php运行节点文件会失败。我试过使用等待30(这个过程大约需要10秒)来确保它在完成之前不会退出。为了让php-->.sh-->节点工作,我需要设置任何特殊权限吗?做了很多搜索都找不到任何东西。

了解文件和执行链是如何完成的很重要,这样才能理解为什么这不会起作用(假设如此)。

假设下面有一个非常常见的设置

当Apache被初始化时,它有一个所有者,在这种特殊情况下,我们称之为www-data。现在,Apache将作为www-data用户在端口80上执行和侦听。这意味着从现在起,它处理的所有请求都将作为www-data用户执行。

所以当你去http://example.com/my-page.php,Apache将收到此请求。然后,它将根据VirtualHost指令中的DocumentRoot,在文件系统中查找与my-page.php关联的文件。完成后,附加到.php文件的PHP解释器将对该文件进行自上而下的解释。

一旦它到达bash脚本,www-data仍然是所有者。现在,在本例中,bash script已作为www-data执行,我敢打赌www-data(或您的Apache用户)不在sudoers列表中(当然是这样)。

为了解决这个问题,您应该确保node实例可以在没有对等配置sudo权限的情况下调用。如果这只是本地主机的问题,而外部世界不会遇到它,我认为将www-data(或您的Apache用户)添加到sudoers列表中并不是一件坏事。