PHP exec调用python无效
大家好。我在DreamHost的一个网络服务器上运行Python。我使用的是他们提供的Python版本,并且在这里使用一个叫做lastfm的模块:http://code.google.com/p/python-lastfm/
为了让它正确导入,我这样做:
import sys
sys.path.append("/home/myusername/build/Python-2.5/Lib/site-packages/")
import lastfm
因为lastfm模块就安装在那儿。
当我用putty通过SSH登录到我的服务器时,我可以直接运行python test.py,效果很好。但是当我通过一个PHP脚本运行它时:
exec("python test.py");
据说它不工作,脚本也没有运行。当我这样做的时候:
import lastfm
后面还有其他内容,但当我真的尝试用这个模块做点什么,比如:
import lastfm
api=lastfm.Api(api_key)
它就不运行了。再说一次,我可以在命令行中用同样的Python安装运行这个脚本,效果很好。所以当我从PHP脚本运行时,肯定是发生了什么问题。我以为它会运行完全相同的Python和所有内容。我查了其他帖子,他们说可能是文件权限的问题,但我把每个文件的权限都设置成777,还是不行。我不知道问题出在哪里。提前谢谢大家。
4 个回答
0
对于Windows用户:
$output = null;
exec('C:\\Python27\\python.exe C:\\sud.py', $output);
echo var_export($output, TRUE);
我整整一天都在找这个代码 ^^
所以我希望这能帮到某个人。
1
无论Python抛出什么错误,都会发送到子进程的错误输出(stderr)。你可以尝试让PHP读取这个错误输出,或者在Python中这样做:
import sys
sys.stderr = sys.stdout
1
试着使用Python程序的完整路径来运行它。例如:
exec("/usr/bin/python test.py")
你可以通过命令行找到这个完整路径,使用which命令就可以了:
$ which python
/usr/bin/python