从php运行shell命令,

从php运行shell命令,,php,python,shell,Php,Python,Shell,我需要使用php脚本中的命令行参数运行python程序 这是我的密码 <?php $output=shell_exec('python /path/to/python_from_php.py input1 input2'); echo $output; ?> 我只得到第二个输入作为输出。 但我想要的是,我应该能够通过python脚本打印输入内容。如果我删除“echo$output”行,我就不会得到任何输出。 我的python代码 import sys a=(sys.argv)

我需要使用php脚本中的命令行参数运行python程序

这是我的密码

<?php


$output=shell_exec('python /path/to/python_from_php.py input1 input2');

echo $output;
?>
我只得到第二个输入作为输出。 但我想要的是,我应该能够通过python脚本打印输入内容。如果我删除“echo$output”行,我就不会得到任何输出。 我的python代码

import sys
a=(sys.argv)
for i in (sys.argv):
 print i

这段代码提供了shell的输出

 <?php
   $output = shell_exec('ls -lart');
   echo "<pre>$output</pre>";
 ?>

从本参考资料中还可以确保php未在安全模式下运行 但是您可以尝试从php调用python脚本

<?php

passthru('python /path/to/python_from_php.py input1 input2');

?>

OP希望:

但我想要的是我应该能够打印输入内容 通过我的python脚本。如果我删除了“echo$output”行,我就不会 获得任何输出

应使用
passthru


检查php用户是否有权运行python和python脚本


Live demo是

一个选项是使用passthru(),但如果您不想管理输出缓冲区,并且需要将输出放在一个数组中,则可以向exec命令添加一个输出参数,如下所示:


检查此问题:尝试将exec函数内的字符串作为输出,而不是按照@Indra建议工作,似乎您需要
passthru
(),而不是
exec
尝试,即使passthru对相同的输出没有任何影响
 <?php
    $my_command = escapeshellcmd('python path/to/python_file.py');
    $command_output = shell_exec($my_command);
    echo $command_output;
 ?>
<?php

passthru('python /path/to/python_from_php.py input1 input2');

?>
<?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";
};