我想使用exec
函数从我的php代码运行一个python文件。为此,我使用命令"python test.py"
,如果我打印“ Hello World”,它将显示出来。
为此,我的php代码如下:
<?php
$Data = exec("python test.py");
echo $Data;
?>
Python代码是:
print("Hello World")
现在,我要向文件传递一个输入值,例如我的名字“ Razin”。这样它将打印"Hello Razin"
。
这是我的python代码
x = input()
print ("Hello "+x)
应打印Hello Razin
。然后从php中捕获它。
我不想传递参数并使用python system
来捕捉。我想使其像代码判断系统一样。
我听说了管道,并阅读了。但这并不清楚我的概念。
N.B:如果您还可以描述输入是否多于1个,那将是一个很大的帮助。
答案 0 :(得分:0)
最后我找到了解决方案。最好的方法是使用proc_open()
代码示例如下。
$descriptorspec = array(
0 => array("pipe", "r"), //input pipe
1 => array("pipe", "w"), //output pipe
2 => array("pipe", "w"), //error pipe
);
//calling script with max execution time 15 second
$process = proc_open("timeout 15 python3 $FileName", $descriptorspec, $pipes);
if (is_resource($process)) {
fwrite($pipes[0], "2"); //sending 2 as input value, for multiple inputs use "2\n3" for input 2 & 3 respectively
fclose($pipes[0]);
$stderr_ouput = [];
if (!feof($pipes[2])) {
// We're acting like passthru would and displaying errors as they come in.
$error_line = fgets($pipes[2]);
$stderr_ouput[] = $error_line;
}
if (!feof($pipes[1])) {
$print = fgets($pipes[1]); //getting output of the script
}
}
proc_close($process);