I need to run a python program with command line argument from my php script
This is my code
<?php
$output=shell_exec('python /path/to/python_from_php.py input1 input2');
echo $output;
?>
I am getting the contents inside shell_exec function as the output. I tried using only
$output=exec('python /path/to/python_from_php.py input1 input2');
I am getting only the second input as my output. But what I want is I should be able to print the input contents through my python script. If I remove the "echo $output" line I am not getting any output. My python code
import sys
a=(sys.argv)
for i in (sys.argv):
print i
3 Answers 3
this code gives you the output from shell
<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>
from this reference php also ensure php is not running in safe mode but you could try just call the python script from php
<?php
$my_command = escapeshellcmd('python path/to/python_file.py');
$command_output = shell_exec($my_command);
echo $command_output;
?>
Comments
As OP wants to:
But what I want is I should be able to print the input contents through my python script. If I remove the "echo $output" line I am not getting any output.
should be used passthru, description
<?php
passthru('python /path/to/python_from_php.py input1 input2');
?>
Check, that you php user have access to run python and your python script.
Live demo is here
Comments
One option is to use passthru(), but if you don't want to manage the output buffer, and having the output in an array is desirable, you can add an output parameter to the exec command as so:
<?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";
};
passthru(link) instead ofexec