【问题标题】:can I call nodejs apps from php?我可以从 php 调用 nodejs 应用程序吗?
【发布时间】:2012-08-24 04:22:29
【问题描述】:

我正在努力...

<?php $content = `echo 'h1 happy days' | jade`; ?>

但它不返回任何东西。其他命令可以(例如ls

我尝试在路径中添加翡翠,在/bin 中创建一个链接,该链接可在命令行中使用,但不能在 php 中使用。

我做错了什么?

编辑:

从命令行:

bash-3.2$ pwd
/Users/billy/test/website-clear
bash-3.2$ echo 'h1 happy days' | jade
<h1>happy days</h1>bash-3.2$ which jade
/bin/jade
bash-3.2$ 

【问题讨论】:

  • 这在命令行中 100% 正确运行?
  • @Matchu - 是的,看编辑
  • @Esailija 刚刚尝试过 - 结果相同,没有错误 - 没有内容
  • 只是为了验证:您正在尝试将调用 'h1 happy days' | jade 的结果存储到 PHP 变量中?
  • 是的……我现在知道为什么它不起作用了……

标签: php node.js


【解决方案1】:

您还有两个可能非常适合您的选项: 1. proc_open 如果您想要更多程度的控制:

    $handle = proc_open("jade", array( array("pipe", "r"), array("pipe", "w"), array("pipe", "w")), $pipes);
    fwrite($pipes[0], 'h1 happy days');
    fclose($pipes[0]);
    $result = stream_get_contents($pipes[1]);
    return $result;

2。使用执行:

    exec("echo 'h1 happy days' | jade", $output, $retval);
    return $output;

确保路径中有翡翠或使用翡翠可执行文件的完整路径。

【讨论】:

    【解决方案2】:

    使用system 函数。我相信您的外部调用由操作系统创建它自己的上下文,然后获得它自己的 stdin/stdout/stderr。改为这样做:

    <?php $content = system("echo 'h1 happy days' | jade", $retval); ?>
    

    【讨论】:

      猜你喜欢
      • 2018-02-27
      • 1970-01-01
      • 2019-08-28
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多