这真让我抓狂。我需要让 php 执行一个命令来重新启动在 node.js 中运行的脚本。我正在使用一个称为永远的 Node 应用程序来运行所述脚本。代码如下:
<?php
echo '<pre>';
echo exec('sudo -u dalton forever restart botti.js 2>&1');
echo '</pre>';
?>
但是,当我运行它时,我得到
sudo: forever: command not found
接下来,我尝试
which forever
和 type 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
我已经无计可施了。有任何想法吗?
最佳答案
由于 forever
命令仅运行,当您提供完整路径时,我怀疑 /usr/local/bin
不在您的 PATH
环境变量中,该变量包含所有目录,默认情况下搜索可执行命令,由 :
分隔(我怀疑您是在 Linux 上,其他操作系统可能会有所不同)
我怀疑 forever
调用 /usr/bin/env node
。来自 env
的错误可能是由于 node
也在您的 PATH
之外造成的。
要在 php 中设置 PATH,请使用 putenv('PATH=<your path here>');
例如附加 /usr/local/bin
:
putenv('PATH=' . getenv('PATH') . ':/usr/local/bin')
这也可能是
sudo
的问题,试试-E
(保留环境)开关。关于php - 未找到命令 : PHP exec(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13377823/