Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

unable to execute python script from php

Tags:

python

php

I want to execute Python script from PHP file. I am able to execute simple python script like:

print("Hello World") 

but when I want to execute following script, nothing happens

from pydub import AudioSegment
AudioSegment.converter = "/usr/bin/ffmpeg"
sound = AudioSegment.from_file("/var/www/dev.com/public_html/track.mp3")
sound.export("/var/www/dev.com/public_html/test.mp3", format="mp3", bitrate="96k")

and same script works fine when I execute it from terminal. here is my php script:

$output = shell_exec("/usr/bin/python /var/www/dev.com/public_html/index.py");
echo $output;

I have also tried following method but no luck:

$output = array();
$output = passthru("/usr/bin/python /var/www/dev.com/public_html/index.py");
print_r($output);

please help me

like image 574
Rajinder Avatar asked Feb 28 '18 15:02

Rajinder


1 Answers

Acc to your reply, as you want to execute the python script from PHP

I was able to execute it using the following code

$command = escapeshellcmd('/var/www/yourscript.py');
$output = shell_exec($command);
echo $output;

Please use the above PHP code with the same python script. Try to run the python script as a GCI script first to make sure it is working and set the permissions to public directory and script as I mentioned before

===================old ans============================

From what you asked, I guess this is what you are trying to do is that you are trying to run it as a CGI script like http://localhost/yourscript.py

And why are you using PHP to execute python script when you can run it directly as a CGI script?

here is what you need to do to make it work like a web page:

  1. enable python CGI in apache ( or in the web server you are using ).
  2. put the script in CGI configured directory
  3. add proper code to your script to make it work as a CGI script
#!/usr/local/bin/python
from pydub import AudioSegment
AudioSegment.converter = "/usr/local/bin/ffmpeg"
sound = AudioSegment.from_file("/var/www/dev.com/public_html/track.mp3")
sound.export("/var/www/dev.com/public_html/test.mp3", format="mp3", bitrate="96k")

print "Content-type: text/html"
print
print ""
print ""
print ""
print "Done/ you can perform some conditions and print useful info here"
print ""
  1. Give permissions to the script and make the public directory writable
  2. Access the script http://localhost/your-path-to-script.py

I was able to run this properly. let me know if that's not your case if you want something else

like image 189
joginder singh Avatar answered Sep 16 '22 13:09

joginder singh