从php调用的python脚本连接到数据库

时间:2014-09-18 06:15:53

标签: php python mysql apache permissions

我有一个执行以下行的python脚本

  

os.system('mysql -H -uusername -ppwd -hipaddr -e“some query”> filename.html')

当这个python脚本独立执行时,一切似乎都很好,用查询输出生成一个html文件。

但是当我从php调用python脚本(使用shell_exec())时,会出现问题。“filename.html”已创建但文件为空。当搜索到这个时我发现必须完成< / p>

  

setsebool -P httpd_can_network_connect = 1。

结果现在我可以使用mysqldb模块连接到mysql,这个模块是从php调用的python脚本,我不需要。 我想通过os.system()使用mysql的execute命令执行查询,这在从php调用时仍然是个问题。 有什么建议让我能做对吗?

编辑: 这是我的PHP脚本

<?php

$command = escapeshellcmd('python csv_generate.py');
$output = shell_exec($command);
echo $output;
?>

这是我的python脚本(csv_generate.py)

import sys
import os
print "hii"
query="show databases"
os.system('mysql -H -uaaa -pbbb -hhostip -P3306   -e"%s" >filename.html'%(query))

从php调用时,python脚本会被执行并打印出hii。还创建了html文件,但文件为空。即使我尝试在浏览器中显示输出 即,

os.system('mysql -H -uaaa -pbbb -hhostip -P3306  -e"%s"'%(query))

它只打印“hii”

错误日志包含

sh:/ usr / local / mysql / bin / mysql:Permission denied

1 个答案:

答案 0 :(得分:0)

您需要创建一个sh文件并将命令放在内部连接。

例如,test.sh

python csv_generate.py

在PHP中

exec("sh test.php");

因此执行命令

并不会失败
chmod 777 csv_generate.py