我需要使用我的php脚本中的命令行参数运行一个python程序
这是我的代码
<?php
$output=shell_exec('python /path/to/python_from_php.py input1 input2');
echo $output;
?>
我将shell_exec函数中的内容作为输出。 我试过只用
$output=exec('python /path/to/python_from_php.py input1 input2');
我只获得第二个输入作为输出。 但我想要的是我应该能够通过我的python脚本打印输入内容。如果我删除&#34; echo $ output&#34;我没有得到任何输出。 我的python代码
import sys
a=(sys.argv)
for i in (sys.argv):
print i
答案 0 :(得分:1)
此代码为您提供shell
的输出 <?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>
从此引用php 也确保php未在安全模式下运行 但你可以尝试从php
调用python脚本 <?php
$my_command = escapeshellcmd('python path/to/python_file.py');
$command_output = shell_exec($my_command);
echo $command_output;
?>
答案 1 :(得分:0)
OP希望:
但我想要的是我应该能够打印输入内容 通过我的python脚本。如果我删除“echo $ output”行,我不是 得到任何输出。
应该使用passthru
,description
<?php
passthru('python /path/to/python_from_php.py input1 input2');
?>
检查你的php用户是否有权运行python和你的python脚本。
现场演示是here
答案 2 :(得分:0)
一个选项是使用passthru(),但如果您不想管理输出缓冲区,并且需要在数组中输出,则可以将输出参数添加到exec命令中,如下所示:
<?php
error_reporting(E_ALL);
$command = escapeshellcmd('/usr/bin/python /path/to/python_from_php.py arg1 arg2');
exec($command, $output);
for ($l=0; $l < count($output); ++$l) {
echo $output[$l]."\n";
};