从PHP exec命令调用的Python脚本中执行SSH

1 投票
1 回答
596 浏览
提问于 2025-04-20 15:07

我有一段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>  

撰写回答