Python SSH脚本在PHP执行时不能工作


Python SSH script won't work while executed by PHP

我有一个Python(2.7)脚本,它通过SSH连接到远程设备并对其进行配置。当我运行它时,这个脚本运行得很好。

我有一个PHP页面,执行其他Python脚本,他们也工作得很好。问题是:当我从PHP页面运行SSH脚本时,它不起作用。(PHP页面和Python脚本都没有问题)

更具体地说,脚本(当由PHP执行时)一直运行,直到它到达第一个SSH相关代码(import paramiko)。

这是怎么回事,我能做些什么让它起作用吗?谢谢!

(操作系统:windows XP)Server:Wamp (apache http Server)

为例,考虑下面的简单代码:

fp=open("file.txt","w")
fp.write("text")
import paramiko
fp.write("another text")
fp.close()
如果我执行

,一切正常。如果是PHP页面,只执行"import paramiko"之前的代码。

或:

fp=open("file.txt","w")
fp.close()
import paramiko
fp2=open("file2.txt","w")
fp2.close()

由我执行-两个文件都已创建。

此外:我尝试使用Try &抓住,但什么也没有。

我的猜测是paramiko不在Apache用户的PYTHONPATH环境变量中。

当Apache启动PHP时,它以"Apache"用户的身份调用PHP(在Linux中通常是www-data组中的apache(或httpd)用户)。有时,该用户设置的环境变量与用户通常设置的环境变量不同。虽然这通常无关紧要,但有时它会引起奇怪的互动(我可以看到它发生在Pip身上)。

我想加一个try…除了paramiko:

try:
   import paramiko
except Exception as e:
   # log your exception here.
   pass # I put this here so the example can compile.
#rest of the script

应该让您知道它是否已安装(我怀疑它没有)。