【问题标题】:Unable to execute a node module within PHP无法在 PHP 中执行节点模块
【发布时间】:2013-08-30 01:27:55
【问题描述】:

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

azure account -help 

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

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

并打印输出,我得到

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

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

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

这也适用于命令行,但不能通过 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),在 require (module.js:380:17),在 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)

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

【问题讨论】:

  • php 不是 bash,不会在 PATH 中搜索 azure 命令。尝试调用它,使用 azure 的完整路径。

标签: php node.js unix


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-08
      • 2020-10-31
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多