开发者

Execute Python program using PHP

开发者 https://www.devze.com 2023-01-08 07:34 出处:网络
Can I simply execute Python program using PHP like this? (in a browser) exec(\"python myProgram /Ap开发者_高级运维plications/MAMP/htdocs/somefile.xml\");

Can I simply execute Python program using PHP like this? (in a browser)

exec("python myProgram /Ap开发者_高级运维plications/MAMP/htdocs/somefile.xml");

or like this:

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

Is any of this method correct?

If not, what should be the right way to do it?

Thanks


I would prefer using proc_open() as suggested by mvds as you can't write to STDIN nor read from STDOUT with exec()/shell_exec(), as well as providing your own set of environment variable -$_ENV.

A sample snippet extracted from my code:

$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);

}

Read more: http://php.net/manual/en/function.proc-open.php


if you want to capture output as well, use proc_open (full fd connectivity, i.e. input and output) or popen (either in- or output)


Yeah, why not?

Note that you are not executing this "in the browser" but rather on the server side, while the page is being pre-processed.

Consider that the page will not return until the exec has finished, so it really depends on what exactly you are trying to do.

0

精彩评论

暂无评论...
验证码 换一张
取 消