PHP执行时,Python SSH脚本不起作用

时间:2013-06-20 19:35:25

标签: php python

我有一个Python(2.7)脚本,通过SSH连接到远程设备并进行配置。 这个脚本在我运行时工作正常。

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

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

它怎么可能,是否有什么可以让它发挥作用? 谢谢!

(操作系统:Windows XP。服务器:Wamp(Apachi http服务器)

例如,请考虑这个简单的代码:

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()

由我执行 - 两个文件都已创建。通过php-只有第一个。

此外:我尝试过使用Try&赶上但没有出现。没有例外。

1 个答案:

答案 0 :(得分:2)

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

当Apache启动PHP时,它调用PHP作为“Apache”用户的正常情况(在Linux中apache(或httpd}用户在组www-data中) 。有时,此用户将设置不同于用户通常拥有的环境变量。虽然这通常无关紧要,但有时它会引起奇怪的交互(我可以看到它与Pip一起发生)。

我想加一试......除了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

那应该让你知道它是否已安装(我怀疑它不是)。