4

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

azure account -help 

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

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

并打印输出,我得到

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

我尝试使用命令“节点”执行模块。前任

节点 /usr/lib/node_modules/azure-cli/bin/azure.js 帐户 -help

这也适用于命令行,但不能通过 PHP 的 exec。

编辑:使用以下命令重定向标准错误:

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

给出了这些细节:

,E === undefined) && (process.env.HOMEDRIVE === undefined))) {throw new Error(, ^,Error: HOME not found, unable to store Streamline callback cache, at 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),在要求(module.js:380:17),在对象。(/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)

我可以尝试进一步调试什么?

4

2 回答 2

3

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

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

于 2013-08-27T11:35:37.297 回答
0

php 不了解 node ,因此请确保指定 nodejs 的完整路径,例如

exec('c:/nodejs/node.exe mynode_scripts.js',$retr_err,$retr_val);
于 2018-05-30T10:14:34.780 回答