我可以像这样使用PHP简单地执行Python程序吗? (在浏览器中)
exec("python myProgram /Applications/MAMP/htdocs/somefile.xml");
或者像这样:
exec("/path/to/python path/to/myProgram /Applications/MAMP/htdocs/somefile.xml");
这种方法是否正确?
如果没有,应该采取什么样的正确方法?
由于
答案 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);
}
答案 2 :(得分:0)
是的,为什么不呢?
请注意,您不是在“浏览器”中执行此操作,而是在服务器端执行此操作,而页面正在进行预处理。
考虑到页面在exec
完成之前不会返回,所以这实际上取决于你想要做什么。