【问题标题】:exec() and passthru() php executingexec() 和 passthru() php 执行
【发布时间】:2013-04-11 01:56:24
【问题描述】:

我尝试使用 PHP 执行 python 脚本但没有结果:我尝试过

$tmp = passthru("C:\\Python27\\python.exe C:\\Python27\\script.py C:\\Python27\\file.pdf",$output);
print($output)

结果:“1”

虽然

$tmp = exec("C:\\Python27\\python.exe C:\\Python27\\script.py C:\\Python27\\file.pdf",$output);

返回数组 ( )

我只能返回一个字符串,有什么建议吗? 我在我的 php.ini 文件中验证了

  safe_mode = Off

谢谢!!

【问题讨论】:

    标签: php exec passthru


    【解决方案1】:

    exec() 的文档说$output 参数是一个数组,每一行都会被填充。如果要将其转换为单个字符串,请使用:

    $output_string = implode("\n", $output);
    

    【讨论】:

    • 我的数组中没有结果,这是我的问题
    • 您从 passthru 获得的退出状态 1 表明 python 在尝试运行脚本时出错。如果脚本没有运行,您将不会得到任何输出。
    • 但是当我在 Windows 上使用这个命令时,我得到了结果: C:\\Python27\\python.exe C:\\Python27\\script.py C:\\Python27\\file.pdf
    • 可能网络服务器没有访问C:\\Python27的权限。
    【解决方案2】:

    这应该适合你:

    ob_start();
    
    passthru("C:\\Python27\\python.exe C:\\Python27\\script.py C:\\Python27\\file.pdf");
    
    $filedata = ob_get_clean();
    
    echo $filedata;
    

    【讨论】:

      【解决方案3】:

      python 默认缓冲输出。将环境变量 PYTHONUNBUFFERED 设置为非空字符串,或者使用 -u 运行 python。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-03
        • 1970-01-01
        相关资源
        最近更新 更多