使用PHP执行Python程序
我可以像这样使用PHP简单地执行Python程序吗?(在浏览器中) 或者像这样:使用PHP执行Python程序,php,python,Php,Python,我可以像这样使用PHP简单地执行Python程序吗?(在浏览器中) 或者像这样: exec("/path/to/python path/to/myProgram /Applications/MAMP/htdocs/somefile.xml"); 这个方法正确吗 如果没有,正确的方法应该是什么 谢谢是的,为什么不呢 请注意,在预处理页面时,您不是在“浏览器”中执行此操作,而是在服务器端执行 考虑到页面在exec完成之前不会返回,因此它实际上取决于您正试图执行的操作。如果您也想捕获输出,请使用pr
exec("/path/to/python path/to/myProgram /Applications/MAMP/htdocs/somefile.xml");
这个方法正确吗
如果没有,正确的方法应该是什么
谢谢是的,为什么不呢
请注意,在预处理页面时,您不是在“浏览器”中执行此操作,而是在服务器端执行
考虑到页面在
exec
完成之前不会返回,因此它实际上取决于您正试图执行的操作。如果您也想捕获输出,请使用proc\u open
(完全fd连接,即输入和输出)或popen
(输入或输出)我更喜欢使用proc\u open()
正如mvds所建议的那样,因为您不能使用exec()
/shell\u exec()
写入STDIN,也不能从STDOUT读取数据,还可以提供您自己的环境变量集-$\u 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);
}
阅读更多信息:基本上我有一个python程序,我可以像这样在终端(mac上)上成功运行:>>>myptogram myfile.xml。。。。。现在我正试图用PHP实现同样的目标。如果我按照我在帖子中展示的方式来做,结果会和我的终端窗口方法一样吗。。。。intrest@ssdesign是的,但是为什么不能用PHP重写python程序呢?因为依赖exec()意味着您将需要在任何运行此代码的地方设置python,并确保允许您使用exec()。我在使用其他语言编写的遗留代码的环境中工作时遇到过一些情况,我希望执行它们,而不是用PHP重写它们。程序员是懒惰的;)为什么不能只使用PHP或Python?Ie:您可以将python程序转换为phpI am,并使用PHP生成XML字符串,然后需要将其作为输入传递给python脚本。就像我在终端窗口中所做的那样:>>>myprogram myfile.xml。。。。基本上,python脚本接受xml文件并对其进行处理以生成字体文件?
$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);
}