使用PHP执行Python程序

时间:2010-07-18 17:22:43

标签: php python

我可以像这样使用PHP简单地执行Python程序吗? (在浏览器中)

exec("python myProgram /Applications/MAMP/htdocs/somefile.xml");

或者像这样:

exec("/path/to/python path/to/myProgram /Applications/MAMP/htdocs/somefile.xml");

这种方法是否正确?

如果没有,应该采取什么样的正确方法?

由于

3 个答案:

答案 0 :(得分:1)

如果你想捕获输出,请使用proc_open(完整的fd连接,即输入和输出)或popen(输入或输出)

答案 1 :(得分:1)

我更喜欢使用mvds建议的proc_open(),因为您无法写入STDIN,也无法使用exec() / shell_exec()从STDOUT读取,并提供您自己的一套环境变量 - $_ENV

从我的代码中提取的示例代码段:

$process = proc_open(
    "{$command}",
    array(            
     array('pipe', 'r'),
     array('pipe', 'w'),
     array('pipe', 'w')
    ),
    $pipes,
    NULL,
    $_ENV
);

if(is_resource($process)){

    fwrite($pipes[0], $string);
    fclose($pipes[0]);

    $rt = stream_get_contents($pipes[1]);
    fclose($pipes[1]);

    $rtErr = stream_get_contents($pipes[2]);
    fclose($pipes[2]);

    $exitCode = proc_close($process);

}

了解详情:http://php.net/manual/en/function.proc-open.php

答案 2 :(得分:0)

是的,为什么不呢?

请注意,您不是在“浏览器”中执行此操作,而是在服务器端执行此操作,而页面正在进行预处理。

考虑到页面在exec完成之前不会返回,所以这实际上取决于你想要做什么。