【问题标题】:php passthru returns no outputphp passthru 不返回任何输出
【发布时间】:2018-02-16 12:28:27
【问题描述】:

我正在尝试从 php.ini 调用 python 脚本。但是,我无法弄清楚如何将结果返回到我的 php 脚本以便在那里使用它。我的php脚本如下:

<?php
  $input = 'help';
  $output = passthru("/usr/bin/python3.5 /path/test.py '$input'");
  echo $output;
?>

而我的 python 脚本 'test.py' 是:

import sys
json2 = sys.argv[1]

【问题讨论】:

    标签: php python output passthru


    【解决方案1】:

    那是因为你的 python 脚本什么都不返回。只是在做:

    json2 = sys.argv[1]
    

    仅将值分配给json2。我怀疑您正在尝试执行以下操作:

    import sys
    json2 = sys.argv[1]
    print json2
    

    这似乎工作得很好:

    ~ # php -a             
    Interactive shell
    
    php > $input = 'help';
    php > $output = passthru("/usr/bin/python test.py '$input'");
    help
    

    更新:

    根据您的评论。您正在寻找 exec() 代替:

    ~ # php -a     
    Interactive shell
    
    php > $input = 'help';
    php > $output = exec("/usr/bin/python test.py '$input'");
    php > echo $output;
    help
    

    请注意,您的 Python 脚本必须输出一些东西。仅仅分配一个变量是行不通的,因为 PHP 不能为你解释你的 Python 代码。它只能运行脚本并对脚本的输出做一些事情。

    【讨论】:

    • 感谢您的回答,但我正在尝试将字符串返回到 php 并在那里打印。不在我的 python 脚本中。
    • @Christian 然后改用exec。但是,如果 PHP 能够捕获它,您的 Python 脚本必须输出所需的返回值。 PHP 无法为您“解释”您的 Python。你需要输出一些东西。
    • 我明白了。 print(json2) 实际上不会打印到屏幕上, echo $output 会。这是一个很难学习的教训。非常感谢@Oldskool
    猜你喜欢
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多