Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在PHP中执行节点模块_Php_Node.js_Unix - Fatal编程技术网

无法在PHP中执行节点模块

无法在PHP中执行节点模块,php,node.js,unix,Php,Node.js,Unix,安装必要的模块后,执行以下命令 azure account -help 一切正常。但是,当我使用exec()从PHP内部调用相同的命令时 然后打印输出,我得到 $output:[](空数组)和$responseCode:8 我已尝试使用命令“node”执行模块。前 node/usr/lib/node_modules/azure cli/bin/azure.js帐户-帮助 这也适用于命令行,但不适用于PHP的exec 编辑:使用以下命令重定向stderr: exec('azure accoun

安装必要的模块后,执行以下命令

azure account -help 
一切正常。但是,当我使用exec()从PHP内部调用相同的命令时

然后打印输出,我得到

$output:[](空数组)和$responseCode:8

我已尝试使用命令“node”执行模块。前

node/usr/lib/node_modules/azure cli/bin/azure.js帐户-帮助

这也适用于命令行,但不适用于PHP的exec

编辑:使用以下命令重定向stderr:

exec('azure account -help &2>1',$output,$responseCode)
提供以下详细信息:

,E==未定义)和(&(process.env.HOMEDRIVE==未定义)){抛出新错误(,^,错误:找不到HOME,无法在对象处存储精简回调缓存。(/usr/local/lib/node_modules/azure cli/node_modules/Streamline/lib/compiler/compile.js:278:90),在Module._compile(Module.js:456:26),在Object.Module._extensions..js(Module.js:474:10),在Module.load(Module.js:356:32),在Function.Module._load(Module.js:312:12),在Module.require(Module.js:364:17),在require(Module.js:380:17),在Object。(/usr/local/lib/node_modules/azure cli/node_modules/streamline/lib/compiler/register.js:28:15),at Module._compile(Module.js:456:26),at Object.Module._extensions..js(Module.js:474:10)


我可以尝试进一步调试它吗?

通过调用exec()并提供HOME env变量解决了问题:

exec('HOME=/tmp/azure account-help 2>&1')


php不知道node,所以请确保指定nodejs的完整路径,例如

exec('c:/nodejs/node.exe mynode_scripts.js',$retr_err,$retr_val);

php不是bash,不会在路径中搜索azure命令。请尝试调用它,使用azure的完整路径。
exec('c:/nodejs/node.exe mynode_scripts.js',$retr_err,$retr_val);