这真让我抓狂。我需要让 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 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
我已经无计可施了。有任何想法吗?

最佳答案

由于 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/

10-11 11:16