从php运行shell命令,
我需要使用php脚本中的命令行参数运行python程序 这是我的密码从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
$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";
};