我有一个执行以下行的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
答案 0 :(得分:0)
您需要创建一个sh文件并将命令放在内部连接。
例如,test.sh
python csv_generate.py
在PHP中
exec("sh test.php");
因此执行命令
并不会失败chmod 777 csv_generate.py