我有一个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&赶上但没有出现。没有例外。
答案 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
那应该让你知道它是否已安装(我怀疑它不是)。