首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NodeJs exec-php模块,php不是命令。

NodeJs exec-php模块,php不是命令。
EN

Stack Overflow用户
提问于 2017-05-01 17:07:25
回答 1查看 1.3K关注 0票数 1

我正在尝试从我的php文件中调用一个nodejs文件。我已经安装和需要的exec-php模块,并已安装良好。我得到的错误是:

代码语言:javascript
运行
复制
{ Error: Command failed: php C:\Users\***\Desktop\nodejs\xxchat11\node_modules\exec-php\lib\php\cli.php -pC:\Users\***\AppData\Local\Temp\tmp-129647qzlx6s.gh55ewmi.tmp -rC:\Users\***\AppData\Local\Temp\tmp-12964
7pid95t.8vpiizfr.tmp
'php' is not recognized as an internal or external command,
operable program or batch file.
   at ChildProcess.exithandler (child_process.js:204:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:886:16)
    at Socket.<anonymous> (internal/child_process.js:342:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at Pipe._handle.close [as _onclose] (net.js:501:12)
  killed: false,
  code: 1,
  signal: null,
  cmd: 'php C:\\Users\\***\\Desktop\\nodejs\\xxchat11\\node_modules\\exec-php\\lib\\php\\cli.php -pC:\\Users\\***\\AppData\\Local\\Temp\\tmp-129647qzlx6s.gh55ewmi.tmp -rC:\\Users\\***\\AppData\\Local\\Temp\\tmp-
129647pid95t.8vpiizfr.tmp' }

我的php文件是:

代码语言:javascript
运行
复制
<?php
$hashes = array('md2','md4','md5','sha1','sha224','sha256','sha384','sha512','ripemd128','ripemd160','ripemd256','ripemd320','whirlpool','tiger128,3','tiger160,3','tiger192,3','tiger128,4','tiger160,4','tiger192,4','snefru','snefru256','gost','gost-crypto','adler32','crc32','crc32b','fnv132','fnv1a32','fnv164','fnv1a64','joaat','haval128,3','haval160,3','haval192,3','haval224,3','haval256,3','haval128,4','haval160,4','haval192,4','haval224,4','haval256,4','haval128,5','haval160,5','haval192,5','haval224,5','haval256,5');
function hash($method. $plaintext){
  if(in_array($method, $hashes)){
    $hashed = hash($method, $plaintext);
    echo 'The '.$method.' hash, for the string `'.$plaintext.'` is: '.$hashed;
  } else {
    echo "Method not found! Please type !help to see the list of supported methods.";
  }
}
?>

在我的nodejs文件中,我通过以下方式调用php文件:

代码语言:javascript
运行
复制
var execPhp = require('exec-php');

app.get('/hash.php/:method/:text', function(req,res){
  execPhp(__dirname+'/hash.php', function(error, php, output){
    console.log(error);
    //php.hash(req.params.method, req.params.text, function(err, result){
        //res.send(result);
    //});
  });
});

此外,在我的index文件中,我通过以下方式运行app.get()

代码语言:javascript
运行
复制
$.get('hash.php/'+method+'/'+plaintext, function(data) {
    $chat.append('Chatbot: <strong>'+data+'</strong><Br />');
});

我在这段代码中做了什么会影响错误的事情吗?此外,如果有一个更有效的方法,请让我知道,因为我已经花了几个小时试图找出如何使这些文件顺利工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-01 17:35:09

exec-php采用3个参数:

  1. String。指向用户php文件的路径。
  2. String。指向机器php bin文件的路径.
  3. Function。创建exec-php对象后的回调函数。

您缺少了第二个参数,即指向php的路径,这就是为什么要获得该错误的原因。

代码语言:javascript
运行
复制
execPhp(__dirname+'/hash.php', 'PATH_TO_PHP', function //...

要获得php位置:

窗口:

代码语言:javascript
运行
复制
C:\>where php.exe

Linux

代码语言:javascript
运行
复制
which php

检查这个答案:如何确定窗口上的php.exe路径-搜索默认路径?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43723169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档