从php运行shell命令,

时间:2015-05-07 11:13:39

标签: php python shell

我需要使用我的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

3 个答案:

答案 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”行,我不是   得到任何输出。

应该使用passthrudescription

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