donglankui1263 2017-10-04 13:57
浏览 81
已采纳

PHP执行Ruby脚本并捕获JSON结果

I have to work with a Ruby script that is dependent on a Gem. When the script is executed a JSON object is returned.

I am successfully executing the script using the following code.

<?php

$ruby = 'ruby ruby/teams.rb';

$res = system($ruby);

var_dump(json_decode($res, true));

The following is an example response from ruby/teams.rb

{"status"=>"active", "teamId"=>"XPLFKS59PK" }

My problem is that this printed directly to the screen and is not capture in the variable $res. When using var_dump(json_decode($res, true)) I get null.

What I would like to be able to do is capture the JSON response in the $res variable so I can convert to an array and worth with the data.

Any ideas if this is possible?

  • 写回答

2条回答 默认 最新

  • dongqiang8683 2017-10-04 14:00
    关注

    My problem is that this printed directly to the screen and is not capture in the variable $res.

    Most likely it sends its output to stderr instead stdout, so you need to redirect the streams yourself like this:

    $ruby = 'ruby ruby/teams.rb 2>&1';
    

    Here more about stream redirection: http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html

    Or, use exec() instead of system()

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?