NodeJs exec-php模块,php不是一个命令

我想从我的nodejs文件调用一个php文件。 我已经安装并需要exec-php模块,它已经安装好了。 我得到的错误是:

 { 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文件是:

 <?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文件:

 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()

 $.get('hash.php/'+method+'/'+plaintext, function(data) { $chat.append('Chatbot: <strong>'+data+'</strong><Br />'); }); 

我在这段代码中做了什么错误,会影响错误吗? 另外,如果有更高效的方法,请让我知道,因为我花了几个小时已经试图弄清楚如何让这些文件顺利运行。

exec-php需要3个参数:

  1. String 。 用户php文件的path。
  2. String机器php bin文件的path。
  3. Function 。 创buildexec-php对象后的callback函数。

你错过了第二个参数,php的path,这就是为什么你得到这个错误。

 execPhp(__dirname+'/hash.php', 'PATH_TO_PHP', function //... 

获取php位置:

视窗:

 C:\>where php.exe 

Linux的

 which php 

检查这个答案: 如何确定在Windows上php.exe的path – search默认path?