安装必要的模块后,执行以下命令
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 回答
通过调用exec()并提供HOME env变量来解决问题:
php不知道节点,所以请确保指定nodejs的完整路径