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.