首页 文章

无法在PHP中执行节点模块

提问于
浏览
4

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

azure account -help

按预期工作 . 但是,当我使用exec()从PHP内部调用相同的命令时 .

exec('azure account -help',$output,$responseCode)

我得到了打印输出

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

我尝试使用命令'node'执行模块 . 防爆

node /usr/lib/node_modules/azure-cli/bin/azure.js account -help

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

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

exec('azure account -help &2>1',$output,$responseCode)

给出了这些细节:

,E === undefined)&&(process.env.HOMEDRIVE === undefined))){throw new Error(,^,Error:HOME not found,无法存储Streamline回调缓存,在Object . (/ 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),at require(module.js:380:17),at Object . (/ usr / local / lib / node_modules / azure-cli / node_modules / streamline / lib / compiler / register.js:28:15),在Module._compile(module.js:456:26),在Object.Module._extensions..js(module.js:474:10)

我还可以尝试进一步调试这个?

2 回答

  • 3

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

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

  • 0

    php不知道节点,所以请确保指定nodejs的完整路径

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

相关问题