简体   繁体   中英

PHP exec python not working

hey yall. Im running python on a webserver from dreamhost. I am using their install of python and am using a lastfm module that can be found here: http://code.google.com/p/python-lastfm/

to get it to import properly i do this

import sys
sys.path.append("/home/myusername/build/Python-2.5/Lib/site-packages/")
import lastfm

since the lastfm module is installed there.

When I use putty to ssh into my server, i can simply run python test.py and it works perfectly. But when i run it from a php script with

exec("python test.py");

it suppossedly does not work and the script doesnt run. it runs perfectly fine when i do

import lastfm

and then have other things after, but when i actually try to do something with the module like:

import lastfm
api=lastfm.Api(api_key)

it does not run. once again i can run the script using the same python install in a shell and it executes fine. So something must be happening that goes wrong when i run it from the php script. I figured it would be running the exact same python and everything. I checked other posts and they say it may be something with file permissions, but ive put every file to 777 and it still doesnt work. idk what the problem could be. thanks in advance everyone.

Try using the full path to the python executable. For example:

exec("/usr/bin/python test.py")

You can find the full path from the command line using the which command:

$ which python /usr/bin/python

Whatever error python is raising would be going to the child's stderr. Try either telling php to read from stderr, or (in python) do this:

import sys
sys.stderr = sys.stdout

For Windows users:

$output = null;
exec('C:\\Python27\\python.exe C:\\sud.py', $output);
echo var_export($output, TRUE);

The code i was searching whole day ^^
That's why - hope it'll help somebody.

For Windows User - Thanks to Karlisup my PHP file could read python. I'm using BITNAMI WAMP in EC2 Amazon, my python file (leadatos.py) and php file are on htdocs folder.

My calling was

 <?php passthru('C:\\\\Python27\\\\python.exe leadatos.py'); ?> 

The last line of my Python file was print "message" .

Hope it words!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM