找不到命令:P​​HP exec()

Dal*_*ore 2 php shell node.js

这真让我抓狂.我需要php执行一个命令来重启节点中运行的脚本.我正在使用一个名为forever的节点应用来运行所述脚本.代码如下:

<?php 
  echo '<pre>';
  echo exec('sudo -u dalton forever restart botti.js 2>&1');
  echo '</pre>';
?>
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时,我得到了 sudo: forever: command not found

接下来,我尝试which forevertype forever,这两者给我:
forever: /usr/local/bin/forever

我编辑我的代码:
echo exec('sudo -u dalton /usr/local/bin/forever restart botti.js 2>&1');

编辑:输入错误后,错误现在是:
/usr/bin/env: node: No such file or directory

我的智慧结束了.有任何想法吗?

cra*_*150 6

由于forever命令只运行,当你给出完整路径时,我怀疑,这/usr/local/bin不在你的PATH环境变量中,它包含所有目录,默认情况下搜索可执行命令,由:(我怀疑你在Linux上,可能)与其他操作系统不同)

我怀疑是forever打电话/usr/bin/env node.错误env可能是由于nodePATH身边的错误造成的.

要在php中设置PATH,请使用putenv('PATH=<your path here>'); eg追加/usr/local/bin:

putenv('PATH=' . getenv('PATH') . ':/usr/local/bin')
Run Code Online (Sandbox Code Playgroud)

这也可能是一个sudo问题,请尝试-E(保留环境)切换.