2014-10-31 136 views
0

我有2个脚本。php不能用MySQLdb执行python脚本

1 - PHP网页脚本,用于收集用户的信息,并发送所有收集到的数据作为参数执行python脚本

2 - Python脚本使用它从参数是sys.argv PHP脚本获取参数和更新一个MySQL使用MySQLdb

当我通过命令行运行python脚本 - 它的作用就像一个魅力。它做它想做的任何事情。但是当我尝试使用PHP脚本执行python脚本时 - 直到我从python脚本删除导入MySQLdb时才会发生任何事情。

只要从我的python脚本中删除“导入MySQLdb” - PHP脚本可以执行它并且它们都可以工作(除了更新MySQL)。

你有没有想法出了什么问题?

P.S. 我试图得到一个错误

在Python文件我用这个:

import traceback 
import sys 
import MySQLdb 

# Some classes and functions 

if __name__ == '__main__': 
    try: 
     main() 
    except Exception, err: 
     print traceback.format_exc() 

,并在PHP中使用:

$result = shell_exec("/usr/bin/python /FULL_PATH_TO/script.py $argument"; 
echo $result; 

而且还是什么都没有。网页只是重新加载而不提供任何信息

+0

“没有任何反应” - 您是否检查了回溯? – mgilson 2014-10-31 06:31:12

+0

@mgilson更新了关于您的评论的主题 – 2014-10-31 06:53:16

+0

也许环境变量PYTHONPATH在由Web服务器执行时有所不同? PYTHONPATH指示python查找库... – Paul 2014-10-31 06:57:24

回答

0

我遇到了同样的问题。这里的关键问题是你的python脚本不输出任何东西!

并找出发生了什么的关键是,你需要知道,这里发生了一些错误,但你看不到错误输出。你需要检查这个问题: PHP script can't get output from Python script

这里是简短的回答:您需要执行并将错误输出(标准错误)输出到标准输出。你需要这样做: exec('python hello-numpy.py 2> & 1');

你会看到这个问题,它必须是MySQLDB库需要一些被拒绝的权限。

如何获得所需的权限,这是另一个问题:)