【问题标题】:run shell command from php ,从 php 运行 shell 命令,
【发布时间】:2015-07-17 22:21:24
【问题描述】:

我需要从我的 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 脚本打印输入内容。如果我删除“echo $output”行,我不会得到任何输出。 我的python代码

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

【问题讨论】:

  • 尝试将 exec 函数内的字符串作为输出,但不起作用
  • 根据@Indra 的建议,您似乎需要passthru(link) 而不是exec
  • 尝试了即使 passthru 没有任何区别相同的输出

标签: php python shell


【解决方案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;
 ?>

【讨论】:

    【解决方案2】:

    正如 OP 想要的那样:

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

    应该使用passthru,description

    <?php
    
    passthru('python /path/to/python_from_php.py input1 input2');
    
    ?>
    

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

    现场演示是here

    【讨论】:

      【解决方案3】:

      一种选择是使用 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";
      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-28
        • 1970-01-01
        • 2022-11-28
        • 1970-01-01
        • 2014-04-21
        • 2015-06-13
        • 2011-03-03
        相关资源
        最近更新 更多