未找到命令:PHP exec()
这让我快发疯了。我需要让php执行一个命令来重新启动在节点中运行的脚本。我正在使用一个名为forever的节点应用程序运行上述脚本。代码如下:未找到命令:PHP exec(),php,node.js,shell,Php,Node.js,Shell,这让我快发疯了。我需要让php执行一个命令来重新启动在节点中运行的脚本。我正在使用一个名为forever的节点应用程序运行上述脚本。代码如下: <?php echo '<pre>'; echo exec('sudo -u dalton forever restart botti.js 2>&1'); echo '</pre>'; ?> 然而,当我运行它时,我得到了sudo:forever:command not found 接
<?php
echo '<pre>';
echo exec('sudo -u dalton forever restart botti.js 2>&1');
echo '</pre>';
?>
然而,当我运行它时,我得到了sudo:forever:command not found
接下来,我尝试永远的和永远
的类型,这两种类型都给了我:
forever:/usr/local/bin/forever
我将代码编辑为:
echo exec('sudo-u dalton/usr/local/bin/forever restart botti.js 2>&1')代码>
编辑:输入错误后,错误现在为:
/usr/bin/env:node:没有这样的文件或目录
我束手无策。有什么想法吗?因为永远
命令只会运行,当您给出完整路径时,我怀疑/usr/local/bin
不在您的路径
环境变量中,该变量包含默认情况下搜索可执行命令的所有目录,这些目录由分隔:
(我怀疑您使用的是Linux,其他操作系统可能有所不同)
我怀疑永远
调用/usr/bin/env node
。来自env
的错误可能也是由于节点
在您的路径
之外造成的
要在php中设置路径,请使用putenv('PATH=');
e、 g.附加/usr/local/bin
:
ln -s /usr/local/bin/forever /usr/bin/env/forever
这可能也是一个sudo
问题,请尝试-E
(保留环境)开关。解决了这个问题,我还需要定义节点:
$asdf=system('sudo-E-u dalton/usr/local/bin/node/usr/local/bin/forever restart botti.js 2>&1');
为永久创建符号链接
ln -s /usr/bin/nodejs /usr/bin/node
如果nodejs仍然被称为“nodejs”,也可以被称为“node”
我会解决永远执行的问题
对于php端,请尝试使用此
是的,/user/..
应该是/usr/..
?是的,我刚刚修复了它。现在错误是/usr/bin/env:node:没有这样的文件或目录
exec函数是一个危险的函数,不应该在php.ini中使用和禁用。使用exec解决web应用程序的问题不是正确的方法。如果我可以如果我想通过web重新启动节点脚本的另一种方法,我会这样做。但我想不起来。我可能需要补充的是,我所说的适用于web应用程序,当然不适用于控制台应用程序。添加了这一行,然后将/usr/local/bin前缀删除为ever,然后我恢复为ever not found错误。echo exec也是如此('export PATH=$PATH:/usr/local/bin;sudo-u道尔顿永远重新启动botti.js 2>&1')
你试过sudo-E
吗?sudo可能被配置为重置路径,在这种情况下,你将不得不永远更改脚本中的路径编辑:啊,我看到你找到了。无论如何,路径似乎仍然是错误的。我知道,我仍在尝试找到它,但这段粗心的代码现在仍然有效。谢谢你的帮助帮助
ln -s /usr/bin/nodejs /usr/bin/node
echo shell_exec("your command sh");