I have a PHP script, that calls a python script by
$call_python = "python ../python/lp_3.py ".$author;
$python_output = Null;
$mystring = exec($call_python, $output_python);
This produces me an error in the log:
$ vi logs/error_log shows
....
Traceback (most recent call last):
File "../python/lp_3.py", line 14, in <module>
import MySQLdb
ImportError: No module named MySQLdb
If I do python python/lp_3.py in the terminal everything is fine. What do I miss?
Edit:
After the suggestion of @S.Lott I had a look at the variables PATH and PYTHONPATH both in the terminal and in PHP.
In the terminal:
$ echo $PYTHONPATH
$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/texbin:/usr/X11/bin
As you can see, PYTHONPATH is empty.
In PHP:
echo getenv("PYTHONPATH"); // NOTHING
echo getenv("PATH"); // /usr/bin:/bin:/usr/sbin:/sbin
Perhaps I should mention that the first two lines in my python script are
#!/usr/bin/env python
# encoding: utf-8
I am open for suggestions. =)
Edit2:
I checked every installed python version on my mac. I found out, that python2.7 has no MySQLdb installed. Is there a way to tell PHP not to use python2.7 and to use e.g. python2.6 instead? I tryed toying with setenv() in PHP but I couldn't figure out how to use it properly, and I don't even know if this is the right approach.
PYTHONPATHis different from in the shell. Or, worse, the entirePATHis different and you have multiple Pythons. You need to display thePATHandPYTHONPATHenvironment variables at the command prompt and in PHP. There may be other things, but that's a start.