从PHP exec命令调用的Python脚本中执行SSH
我有一段PHP代码,它会调用一个Python脚本。在这个Python脚本中,我通过SSH连接到一个远程系统并运行命令。当我单独执行Python代码时,一切都很正常,但当我从PHP调用它时,连接却无法建立,浏览器输出的是一个空字符串。
这是我的PHP脚本:
<?php
$command = escapeshellcmd('python p.py');
$output = shell_exec($command);
echo $output;
?>
Python脚本(p.py)如下:
import subprocess
proc = subprocess.Popen(["ssh remotehost uptime"], stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
print "program output:", out
当我执行
python p.py
时,程序成功打印出结果。而当执行PHP脚本时,浏览器只显示:
程序输出:
这表明Python脚本确实被执行了,但问题出在通过PHP调用时的SSH连接上。有没有人能给我建议,让它正常工作呢?
编辑:
当我的Python代码涉及数据库连接时,也出现了类似的问题。经过查找,我发现需要在/etc/sysconfig中设置:
setsebool -P httpd_can_network_connect_db=1
那么,对于SSH连接,还有没有类似的问题需要注意呢?
1 个回答
-1
试着在你的PHP代码中使用这段代码。注意:这个文件的后缀名应该是.php。
<html>
<head></head>
<body>
<H3>Executing...</H3>
<?php exec("p.py"); ?>
<H3>Completed...</H3>
</body>
</html>